Я пытаюсь создать общий список из определенного типа, который извлекается из других мест:Использования 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?)
Is это даже возможно или я нахожусь на C# 4 Dynamic территории?
В качестве фона: я хочу автоматически загружать все списки с данными из репозитория. Приведенный ниже код получает форму Form, свойства которой повторяются для любого IEnum (где T наследуется от DomainEntity). Я хочу заполнить список объектами Type, список из которого сделан из репозитория.
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);
}
}
}
Да, я думал, что может быть. Я потребляю список из метода() в другом месте в системе, поэтому не может создать список с нуля. Спасибо за вашу помощь! –
Вы также можете вызвать общий метод с использованием отражения, но у вас все еще будут те же проблемы с результатом. Проверьте эту статью о вызове динамического общего метода: http://www.codeproject.com/KB/dotnet/InvokeGenericMethods.aspx – max