5

私は常にIDataErrorInfoインターフェイスを実装してきましたが、この行が何を意味し、どのように機能するのかを実際に理解することはありませんでした。

string IDataErrorInfo.this[string propertyName]
{
    get { return this.GetValidationError(propertyName); }
}

どのよう.this[string propertyName]に機能し、このプロパティはいつ/どのように呼び出されますか?

4

2 に答える 2

8

これは、インデクサーの明示的なインターフェイスの実装です。(編集:署名の部分は明示的なインターフェイスの実装を意味し、部分はインデクサーを意味します。)IDatatErrorInfo..this[...]

IDataErrorInfo明示的に型指定されたオブジェクトがあり、角括弧を使用して文字列を渡すときに値を取得/取得するたびに呼び出されます。例:

IDataErrorInfo myDataErrorInfo = GetErrorInfo();
string myPropertyError = myDataErrorInfo["SomePropertyName"];

これは明示的なインターフェイスの実装であるため、型が正確IDataErrorInfo. サブクラスとして入力した場合、そのクラスが公開しない限りアクセスできません。

MyDataErrorInfoImpl myDataErrorInfo = GetErrorInfo();
string myPropertyError = myDataErrorInfo["SomePropertyName"]; //compiler error!
于 2013-06-21T13:35:12.610 に答える