Есть небольшая возможность, я мог бы неправильно сформулировать заголовок и извиниться, если это встречается, как уже ответил (и у меня просто нет нашел его).Как использовать тип Type.GetType(), чтобы передать неизвестный тип во время выполнения в общий метод
Сказав, что я искал этот сайт в течение нескольких часов и столкнулся с несколькими очень сложными попытками (недостаточно ясными) использования отражения, которые я не хочу использовать из-за соображений производительности. Я уже использую Type.GetType(), который ищет через .dll, чтобы найти тип.
Итак, без дальнейших церемоний, здесь идет ..
У меня есть метод в классе, который принимает обобщенный тип:
public class SomeClass
{
public TList Execute<TList, TItem>(string text)
where TList : ICollection<TItem>, new()
where TItem : new()
{
TList list = new TList();
TItem item = new TItem();
...set properties and add to list...
...implementation not important...
return list;
}
}
использования (вызова метода):
public void callingMethod(string typeNameString, string typeItemNameString)
{
Type T = Type.GetType(typeNameString);
Type Ti = Type.GetType(typeItemNameString);
SomeClass sc = new SomeClass();
// and here is where things falls apart drastically..
// not sure exactly what to do here as it seems noting works
var result = sc.Execute<T,Ti>("hello text"); //no luck..'T' is a variable but used as a type
var result = sc.Execute<Type.GetType(typeNameString),Ti>("hello text"); //no luck...operator '<' cannot be appliedto operands of type 'method group' and 'Type'
//This works fine
List<Invoice> _invoices = sc.Execute<Invoices, Invoice>("hello text");
}
public class Invoice
{ //properties omitted }
public class Invoices : List<Invoice>
{}
Это похоже на очень прямолинейный/логический подход, но это не так.
Что мне не хватает?
Я ценю время и целеустремленность, которые люди берут, чтобы ответить на вопросы на этом форуме.