我有许多类型都实现了简单的界面。
我希望能够获得类型列表,然后在通用方法中使用它们
public T GetByID<T>(BaseAPI api) where T: class
{
....
try
{
var response = (HttpWebResponse)httpRequest.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
T returnObject = JsonConvert.DeserializeObject<T>(responseString);
return returnObject;
}
catch (Exception ex)
{
return default(T);
}
}
而不是必须维护
列表IF INSERTING OR UPDATING THEN
v_value := :new.column2;
ELSE
v_value := :old.column2;
END IF;
...
SELECT field INTO my_var FROM my_table WHERE column1 = v_value;
答案 0 :(得分:1)
我真的没有看到你为什么这么做的实际原因(可能是一个较大问题的一小部分?),但这是可能的(见下文)。如果您有更具体的问题,可以尝试更新您的问题。
DoThing doThing = new DoThing();
//loop through types which are IFoo
foreach (var type in AppDomain.CurrentDomain.GetAssemblies().SelectMany(s => s.GetTypes()).Where(p => typeof(IFoo).IsAssignableFrom(p) && p.IsClass))
{
//call DoThing.Doit<t> method using reflection
MethodInfo method = typeof(DoThing).GetMethod("Doit");
MethodInfo generic = method.MakeGenericMethod(type);
generic.Invoke(doThing, null);
}
请注意,上面的代码假设已定义DoThing:
public class DoThing
{
public void Doit<T>() where T : IFoo
{
}
}