Ho questo metodo:Come si chiama un metodo generico se si conosce solo il parametro type in fase di esecuzione?
public List<T> SomeMethod<T>(params) where T : new()
quindi voglio chiamare questo SomeMethod
che va bene se conosco il tipo:
SomeMethod<Class1>();
Ma se ho solo Class1
in fase di esecuzione Sono in grado di chiamalo?
Quindi, come chiamare SomeMethod
con tipo T sconosciuto? Ho ottenuto il tipo usando la riflessione.
Ho il tipo di tipo ma SomeMethod<Type | GetType()>
non funziona.
Aggiornamento 7. Maggio:
Ecco un codice di esempio di ciò che voglio ottenere:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication63
{
public class DummyClass
{
}
public class Class1
{
public string Name;
}
class AssemblyTypesReflection
{
static void Main(string[] args)
{
object obj = new Class1() { Name = "John" } ;
Assembly assembly = Assembly.GetExecutingAssembly();
var AsmClass1 = (from i in assembly.GetTypes() where i.Name == "Class1" select i).FirstOrDefault();
var list = SomeMethod<AsmClass1>((AsmClass1)obj); //Here it fails
}
static List<T> SomeMethod<T>(T obj) where T : new()
{
return new List<T> { obj };
}
}
}
Questa è una demo preso fuori di un contesto più grande.
SLaks ha risposto alla tua domanda. Sto solo notando che hai abusato della parola "anonymous" qui, il che significa qualcosa di diverso. Nel tuo caso, T è generico. – SimpleVar
Questa è la tua chiamata API o qualche API di terze parti? Se è tuo, allora considera di cambiarlo, perché i generici non risolvono il problema ma lo creano in questo caso. – empi
possibile duplicato di [Chiamare un metodo generico con un argomento di tipo noto solo al momento dell'esecuzione] (http://stackoverflow.com/questions/325156/calling-generic-method-with-a-type-argument-known-only-at -execution-time) – user7116