我試圖創建從是從其他地方獲取特定類型的泛型列表:使用C#類型爲通用
Type listType; // Passed in to function, could be anything
var list = _service.GetAll<listType>();
但是我得到的編譯錯誤:
The type or namespace name 'listType' could not be found (are you missing a using directive or an assembly reference?)
是這甚至可能或者我將腳踏上C#4動態領土?
作爲背景:我想從存儲庫中自動加載所有列表中的數據。下面的代碼得到了一個表單模型,它的屬性被迭代用於任何IEnum(其中T繼承自DomainEntity)。我想填充列表中的類型對象從存儲庫中創建的列表。
public void LoadLists(object model)
{
foreach (var property in model.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty))
{
if (IsEnumerableOfNssEntities(property.PropertyType))
{
var listType = property.PropertyType.GetGenericArguments()[0];
var list = _repository.Query<listType>().ToList();
property.SetValue(model, list, null);
}
}
}
是的,我認爲可能是這種情況。我正在使用系統中其他位置的方法()中的列表,因此無法從頭開始創建列表。謝謝你的幫助! –
2010-06-08 05:18:43
您也可以使用反射來調用泛型方法,但結果仍然會出現同樣的問題。查閱這篇關於動態泛型方法調用的文章:http://www.codeproject.com/KB/dotnet/InvokeGenericMethods.aspx – max 2010-06-08 10:31:06