在棱鏡應用程序,我有一個模塊的定義是這樣的:C#未使用的字段
[Module(ModuleName = "TestModule", OnDemand = true)]
public class Test :
ModelBase,
IModule
{
...
moduleName = "TestModule";
...
};
正如你所看到的,將這些模塊在運行時加載,有很多人用不同的模塊名稱。
爲了避免代碼冗餘,我寫了一個基類模型庫從這些模型推導如下:
public class ModelBase:
{
/// <summary>
/// The module name
/// </summary>
protected string moduleName;
...
}
字符串MODULENAME永遠不會在模型庫中,所以我得到的編譯器這很簡單的說明了CS0169。 我不喜歡壓制警告,所以我想知道是否有更好的解決方案。
moduleName將在派生類中設置爲實際名稱,如您在第一個片段中所看到的。
問題是,無法在ModelBase類中分配名稱,因爲此處未提前知道模塊的名稱。
這個問題可能聽起來很蠢,因爲一個能寫
public class ModelBase:
{
/// <summary>
/// The module name
/// </summary>
protected string moduleName = "";
...
}
來解決這個問題。
我不知道是否有這種經常性問題的「最佳做法」。 非常感謝
克林斯曼
非私有,不恆定的領域是一個代碼氣味,IMO。爲什麼不在這裏使用(可能是抽象的)屬性? – Ani