我需要實例化一個列表屬性,泛型類型可以是任何東西。具有任何泛型參數的泛型屬性列表
所以我Main
- 方法如下:(現實,ParsingObject<T>
是對象我從服務中獲得)
public static void Main()
{
Parser parser = new Parser();
parser.AddAnObject(
new ParsingObject<int>{PropertyName = "FirstProperty", Active=true, DefaultValue=1}
);
parser.AddAnObject(
new ParsingObject<bool>{PropertyName = "SecondProperty", Active=false, DefaultValue=false}
);
parser.Parse();
}
ParsingObject
得到任何類型的(我認爲只有字符串,BOOL,INT,... )一般。現在在我的解析器我需要把這個對象添加到像List<ParsingObject<T>>
:
public class Parser
{
private readonly List<ParsingObject<T>> _listOfObjects = new List<ParsingObject<T>>();
public void AddAnObject<T>(ParsingObject<T> item)
{
_listOfObjects.Add(item);
}
public void Parse()
{
foreach(var item in _listOfObjects.Where(w=>Active))
{
DoSomething(item);
}
}
}
,但我知道,在實例化列表時我無法設置T
作爲一般的參數(編譯哭..)。 所以我可以通過使用ArrayList
來解決這個問題 - 但之後我無法訪問每個對象的屬性。 (見Parse()
- 方法)
的完整性,這是我ParsingObject<T>
-class:
public class ParsingObject<T>
{
public string PropertyName { get; set; }
public bool Active { get; set; }
public T DefaultValue { get; set; }
}
任何想法如何,我可以解決這個問題?我無法修改ParsingObject<T>
-課程。
tada!您現在已經意識到這種通用模式的侷限性。 – Jamiec
這就是傷心......( –
不是真的 - 當你想起它時,它顯然無法工作!_listOfObjects會知道下一個項是'int'還是'string' – Jamiec