0

我从一个名为“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”这样的属性来显示根据需要对象?

谢谢。

4

1 回答 1

1

你可以试试这个:

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

虽然重写 ToString() 显然是首选。

于 2010-10-19T02:42:01.873 回答