私はこのようなモジュールの定義があります。C#の未使用フィールドプリズムアプリケーションで
[Module(ModuleName = "TestModule", OnDemand = true)]
public class Test :
ModelBase,
IModule
{
...
moduleName = "TestModule";
...
};
あなたが見ることができるように、これらのモジュールは、実行時にロードされ、それらの多くは別のモジュール名でありますが。
コードの冗長性を避けるために、私は次のようにこれらのモデルが由来する基底クラスModelBase書いた:
public class ModelBase:
{
/// <summary>
/// The module name
/// </summary>
protected string moduleName;
...
}
文字列moduleNameのがModelBaseで使用されていないので、私は、コンパイラを入手んがこれをexcactlyと言っている警告CS0169。 私は警告を抑制したくないので、もっと良い解決策があるのだろうかと思います。
moduleNameは、第1のスニペットで見られるように、派生クラスの実際の名前で設定されます。
問題は、モジュール名が事前にわかっていないため、ModelBaseクラスに名前を割り当てることができないことです。
1は、この問題を克服するために
public class ModelBase:
{
/// <summary>
/// The module name
/// </summary>
protected string moduleName = "";
...
}
を書くことができますので、この問題は、愚かに聞こえるかもしれません。
この定期的な質問に「ベストプラクティス」があるのだろうかと思います。 System.String
が参照型であるため、 感謝
ユルゲン
非民間、非定数フィールドはIMO、コードのにおいですモデル名を与えるようになります。なぜここに(おそらく抽象的な)プロパティを使用しないのですか? – Ani