我想構造函數調用只允許有限範圍的「擴展」。比方說,我有這2類:與其他類常數值調用構造函數
public class Foo
{
public Foo(Extension ext)
{
// do something
}
}
public class Extension
{
public const string TXT = ".txt";
public const string XML = ".xml";
}
所以,當其他開發人員希望使用Foo
他只能用值從Extension
類這樣做,像這樣:當試圖
Foo foo = new Foo(Extension.TXT);
但要做到這一點我得到一個IDE錯誤說:"cannot convert from 'string' to '<ProjectName>.Extension'
。
作爲「解決方法」我能我Extension
類更改爲這樣的事情:
public class Extension
{
public enum File
{
TXT,
XML
}
}
,並使用它像這樣:
Foo foo = new Foo(Extension.File.TXT);
這工作完全正常,但我不喜歡這個調用是一個更長的級別(class - > enum - > element而不是class - > element)。
所以,問題是我的解決方法,實際上是唯一有效,正確或最佳實踐解決方案?
從類中刪除NUM並使它上市。你只會調用enum:'new Foo(File.Txt);'。 –