C#3.0オート性にすることはできるカスタム行?
-
02-07-2019 - |
質問
知りたいと思い場合があるために追加の行動の自動産の取得/設定します。
明らかなっていると考えるのは完成度が低いといえるでしょう毎に自動車による移動方法を呼びかけず PropertyChanged
イベントハンドラの一部として System.ComponentModel.INotifyPropertyChanged
実装されます。ることができるようになるクラスにおいて数多くの特性が観察でき、それぞれのプロパティが定義されて使用自動産構文です。
基本的に私は疑問があればいつでも同様のいずれかの取得/設定テンプレートやポストの取得/設定フッククラスです。
(私と同じ機能を簡単に実現できまやより詳細な方法でいただけるヘイトによる複製パターン)
解決
なんて"伝統"プロパティ定義のためのカスタム。
他のヒント
Noはできません:オートパーティショートカットのための明示的なアクセス用メソッドへの民間分野です。例えば
public string Name { get; set;}
ショートカットを
private string _name;
public string Name { get { return _name; } set { _name = value; } };
だいカスタムロジックを記述する必取得および設定を明確にした。
見る PostSharp.ではAOPの枠組みtypicaly号"このコードパターンをいhunderd時、どうしたいので自動化です。".きの簡素化とPostSharpこと(例えば):
public Class1 DoSomething( Class2 first, string text, decimal number ) {
if ( null == first ) { throw new ArgumentNullException( "first" ); }
if ( string.IsNullOrEmpty( text ) ) { throw new ArgumentException( "Must be not null and longer than 0.", "text" ) ; }
if ( number < 15.7m || number > 76.57m ) { throw new OutOfRangeArgumentException( "Minimum is 15.7 and maximum 76.57.", "number"); }
return new Class1( first.GetSomething( text ), number + text.Lenght );
}
へ
public Class1 DoSomething( [NotNull]Class2 first, [NotNullOrEmpty]string text, [InRange( 15.7, 76.57 )]decimal number ) {
return new Class1( first.GetSomething( text ), number + text.Lenght );
}
はありません。:)
た場合の挙動きを繰り返し多く開発中ることができる、カスタムコードスニペットのための特別なタイプの物件です。
き使用を検討 PostSharp 記インタセプタの仕掛け人.それはLGPLとGPLedによって、図書館のご使用となります。
最も近接解決して私が考えられることはいを使用していますので、介助方法:
public void SetProperty<T>(string propertyName, ref T field, T value)
{ field = value;
NotifyPropertyChanged(propertyName);
}
public Foo MyProperty
{ get { return _myProperty}
set { SetProperty("MyProperty",ref _myProperty, value);}
} Foo _myProperty;
所属していません StackOverflow