在变量中传递泛型方法的类型

Man*_*nta 1 c# generics .net-core

我有几节课ClassAClassB.

我想将类型传递给通用函数,例如:

var myTypeToPass=new ClassA();   

using(var context=_contextFactory.CreateDbContext())
{
    var test = context.Set<Here is myTypeToPass>();
}
Run Code Online (Sandbox Code Playgroud)

是否可以?

这个想法是为相同的测试保留相同的代码,但使用不同的实体。

Fil*_*dor 6

void DoSomething<T>()
{
  using var ctx = CtxFactory.Create();
  var test = ctx.Set<T>();
}
Run Code Online (Sandbox Code Playgroud)

然后你就可以像这样使用它

DoSomething<ClassA>();
Run Code Online (Sandbox Code Playgroud)

如果您已经拥有某种类型的实例并且需要对其执行某些操作,您仍然可以执行以下操作:

void DoSomething<T>( T myArg )
{
    ...
    var test = ctx.Set<T>();
}
Run Code Online (Sandbox Code Playgroud)

及用法

var instance = new ClassA();
DoSomething(instance);
Run Code Online (Sandbox Code Playgroud)

请注意此处如何推断类型参数。