从System.Data.Entity.DynamicProxies对象调用重写的函数

时间:2011-08-17 17:11:55

标签: c# asp.net-mvc-3 reflection entity-framework-4.1

我有一个扩展方法,我正在尝试制作通用的,用于传递消息。

    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()。

1 个答案:

答案 0 :(得分:1)

问题是你没有“覆盖”.ToString();你用new重新引入它。如果您要覆盖,请使用override,而不是new