我有一个扩展方法,我正在尝试制作通用的,用于传递消息。
public static ActionResult RedirectCompanyMessage<T>(this Controller controller, T mObject, Company company)
{
var msg = mObject.ToString()
...
}
mObject.ToString()
正在返回像System.Data.Entity.DynamicProxies.SerialCode_960A5FEF6FE5426EE5F55B8627454C71E7D088921143DE49B208E7FED043ADA5
但是,基类型(代理类型?)有一个重写的ToString()。
public partial class SerialCode
{
//Prints the serial code with dashes every 5 chars
public new String ToString()
{
return Utility.Utility.FormatSerial(this.Serial);
}
}
那么,这笔交易是什么?在调试过程中,如果我将鼠标悬停在“T”上,则visual studio会将T mObject
显示为正确的Models.SerialCode
,但如果我在即时窗口中运行mObject.GetType()
,我会看到FullName = "System.Data.Entity.DynamicProxies.SerialCode_960A5F...
我只是希望能够在所有部分类中可靠地运行重写的ToStrings()。
答案 0 :(得分:1)
问题是你没有“覆盖”.ToString()
;你用new
重新引入它。如果您要覆盖,请使用override
,而不是new
。