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
}

c#:方法需要类型

怎么样:

void MyFunction<T> (T o)
{
    dataContext.Set<T> ().SomeThing ();
}

然后称之为:

MyFunction<County> (county_object);

除了其他答案外,您还可以使用一些反射技巧来完成此操作。基本上,它会归结为:

  1. 查找集合方法的MethodInfo对象
  2. CCD_ 1与CCD_
  3. 调用该方法,然后调用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();