c#:方法需要类型
本文关键字:类型 方法 | 更新日期: 2023-09-27 17:58:15
class Country
{
//props
}
dataContext是一个带有方法Set((的变量,其工作原理与下面的类似
dataContext.Set<Country>().SomeThing();
但我不想硬编码type=Country,而是想从变量中提取类型,例如
function MyFunction(object o)
{
dataContext.Set</*something_here*/>().SomeThing();
//some how extract type from variable o
}
怎么样:
void MyFunction<T> (T o)
{
dataContext.Set<T> ().SomeThing ();
}
然后称之为:
MyFunction<County> (county_object);
除了其他答案外,您还可以使用一些反射技巧来完成此操作。基本上,它会归结为:
- 查找集合方法的MethodInfo对象
- CCD_ 1与CCD_
- 调用该方法,然后调用
SomeThing
方法
试图在这里从内存中对此进行编码,因此请原谅任何代码错误:
var setMethod = dataContext.GetType().GetMethods().First(x => x.Name == "Set");
var genericVersion = setMethod.MakeGenericType(o.GetType());
var result = genericVersion.Invoke(dataContext, null) as WhateverSetReturns;
result.SomeThing();