There is a slight possibility I could have worded the title incorrectly and I apologize if this comes across as already answered (and I just have not found it).
Having said that I have searched this site for several hours and have come across several very involved attempts (not clear enough) of using reflection, which I don't want to use because of performance reasons. I am already using Type.GetType() which searches through the .dll to find the type.
So, without further ado, here goes..
I have a method in a class that accepts a generic type:
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;
}
}
Usage (calling method):
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>
{}
This seems like a very straight forward/logical approach, but is proving not to be the case.
What am I missing?
I appreciate the time and dedication individuals take to respond to questions on this forum.
Aucun commentaire:
Enregistrer un commentaire