これは、プロパティを宣言するためのコード サンプルで繰り返し見られます。 これは、匿名のプライベート バッキング フィールドを使用して自動プロパティ機能を利用していることを理解しています。
public sometype somevar {get;set;} <-- nothing happening in the getter or setter.
しかし、このような例はもう見たことがないようです。私が 2000 年代の大学にいたとき、.NET プログラミングでは、このようなものが常に使用されていました。Server、Database、User などの一連のプロパティと、ConnectionString という別のプロパティがあると考えることができる最良の例 (これは単なる例であり、このようなコードはありません)
public string ServerName { get; set; }
public string DatabaseName { get; set; }
public string UserName { get; set; }
public string ConnectionString
{
get
{
return SomePrivateMethod(this.ServerName,this.DatabaseName,this.UserName);
}
set
{
this.ServerName = PrivateMethodThatParsesOutTheServerName(value);
this.DatabaseName = PrivateMethodThatParsesOutTheServerName(value);
this.UserName = PrivateMethodThatParsesOutTheServerName(value);
}
}
「0001020003」のような値を格納するテキスト フィールドであるストラップと呼ばれるプロパティがありますが、そのストラップ形式を解釈できないレガシー システムがあります。だから私はこれをするつもりだった
public string strap {get;set;}
public string legacyFormat {
get {
return FormatForLegacySystem(this.strap);
}
//don't need a setter though
}
それから私は、おそらくこれは代わりに拡張機能であるべきだと思いました...
public static string AsLegacyFormat(this string value){
//formatting code;
return fancynewformat;
}
最後の考え。この種のことは本当に私のサービス層に属していると思っていました。
public getLegacyFormat(string strap)
{
//stuff here
}
しかし、ストラップをレガシー形式で渡す必要があるときに、ストラップのすべてのインスタンスをラップする必要があるのはばかげているようです。そして、このアプローチをプロパティで使用するのは面倒です
Model.LegacyFormat = service.getLegacyFormat(Model.strap);
私のストラップに基づいて LegacyFormat は不変でなければならないので、それは悪い形のようです。