继承的.Net类ToString不覆盖

时间:2010-10-19 02:33:48

标签: .net class tostring override inherited

我从名为“DataTypes”的基础创建了一个继承的类“StorageMedium”。 StorageMedium有两个属性,Name()和Capacity()。

在继承了类库中所有其他对象的DataTypes对象中,我已经抑制了Equals,ReferenceEquals,GetHashCode,ToString和GetType函数,因此这些函数在Visual Studio编辑器中是不可浏览的。

目的是由于用户最终使用的类库不是“程序员”,我想隐藏他们可能遇到的任何不必要的代码或函数。

我有第二个“创建”StorageMedium实例的类:

    Shared ReadOnly Property DVD() As StorageMedium
        Get
            Return New StorageMedium(NewMedium.DVD)
        End Get
    End Property

    Shared ReadOnly Property CD() As StorageMedium
        Get
            Return New StorageMedium(NewMedium.CD)
        End Get
    End Property

在我的网页上,我想调用创建类并创建StorageMedium的实例,并将名称和容量显示为具有名称和容量的字符串

  Response.Write(StorageMedium.Utils.DVD)
  DVD: 4.7Gb

但是,当我使用Response.Write方法时,它会显示完整的类名

  Response.Write(StorageMedium.Utils.DVD)
  LC.Utils.Convert.Computer.DataType.StorageMedium

可以假设这可能是由于对基本Object函数的抑制造成的,但是,有没有办法“重新连接”或重新创建默认函数来利用ToString功能而不创建像“ToOutput”这样的属性至 根据需要显示对象?

感谢。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

public class StorageMedium {
    // Other code
    public static implicit operator String(StorageMedium instance) {
        return "StorageMedium"; // Or whatever string you prefer
    }
}

虽然显然优先覆盖ToString()。