从System.Data.Entity.DynamicProxies对象调用被覆盖的函数

本文关键字:覆盖 函数 调用 对象 System Data Entity DynamicProxies | 更新日期: 2023-09-27 18:06:07

我有一个扩展方法,我试图使通用的消息传递。

    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()在我所有的部分类

从System.Data.Entity.DynamicProxies对象调用被覆盖的函数

问题是你没有"覆盖" .ToString();你用new重新引入了它。如果你想重写,使用override,而不是new