0

「DataTypes」というベースから継承されたクラス「StorageMedium」を作成しました。StorageMediumには、Name()とCapacity()の2つのプロパティがあります。

クラスライブラリ内の他のすべてのオブジェクトが継承されているDataTypesオブジェクトでは、Equals、ReferenceEquals、GetHashCode、ToString、およびGetType関数を抑制して、これらの関数をVisualStudioエディターで参照できないようにしました。

目的は、クラスライブラリが最終的にユーザーによって使用されるという事実によるものであり、ユーザーは「プログラマー」ではありません。ユーザーが遭遇する可能性のある不要なコードや関数を非表示にします。

StorageMediumのインスタンスを「作成」する2番目のクラスがあります。

    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

私のWebページで、作成クラスを呼び出してStorageMediumのインスタンスを作成し、名前と容量を名前と容量の文字列として表示したいと思います。

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

ただし、Response.Writeメソッドを使用すると、完全なクラス名が表示されます

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

これはおそらく基本的なオブジェクト関数の抑制が原因であると考えるのが妥当ですが、「ToOutput」のようなプロパティを作成して表示することなく、「再フックアップ」またはデフォルト関数を再作成してToString機能を利用する方法はありますか。必要に応じてオブジェクト?

ありがとう。

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 に答える