4

.NET構成を利用して、カスタムセクションや要素などを理解しようとしています。

これらのカスタムセクションを実装するには、ゲッターとセッターを明示的に宣言する必要があり、通常はコードが膨張するようです。

たとえば、ここで:

http://msdn.microsoft.com/en-us/library/2tw134k3.aspx

具体的には、getメソッドとsetメソッドで明示的に戻り、設定する必要があるようです。

// Create a "remoteOnly" attribute.
[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly
{
  get
  { 
    return (Boolean)this["remoteOnly"]; 
  }
  set
  { 
    this["remoteOnly"] = value; 
  }
}

以下で

[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly { get; set }

上記と同等ではありません。

これは本当に本当ですか?そのようなバニラの特性があっても、私たちは冗長でなければなりませんか?

4

2 に答える 2

5

はい。外部ストレージメカニズム(構成ファイルにデータを入力する基本クラスのディクショナリ)に依存しているためです。

また、コードの膨張についてこれを心配している場合は、間違ったことを心配しています。一度書いて、二度と見ないでください。コードベースを肥大化させるほど多くのカスタム構成設定を処理するコードを用意するべきではありません。小さなバンプかもしれませんが、膨満感はありません。また、VS2005より前ではなく、今これに対処していることをうれしく思います。作成する必要のあるコードがさらに多くなりました(XMLセクションを手動で解析する必要がありました)。

最後に、それでもそれほど嫌いな場合は、いつでも「必要な最後の構成セクションハンドラー」を使用できます: https ://sites.google.com/site/craigandera/craigs-stuff/clr-workings/the -last-configuration-section-handler-i-ll-ever-need

彼がそれを書いてから長い時間が経ちましたが、それでもうまくいくはずです。

于 2012-05-08T21:05:14.490 に答える
2

より簡潔な形式{ get; set; }は、プライベートデータメンバーの使用に拡張されます(私が正しく覚えている場合)。これはC#の単なる構文糖衣であり、構成システムとは何の関係もありません。

ConfigurationPropertyの場合、現在のオブジェクトのインデクサーにアクセスして値を格納/取得する必要があります。これがシステムの設計方法であるためです。そうです、それは一種の冗長ですが、それを回避する実際の方法はありません-それが値を保存/取得する方法です。

これらのプロパティを簡単に(そしてエラーが発生しにくく)作成できるように、いくつかのコードスニペットを提案できますか?

于 2012-05-08T21:04:42.790 に答える