Man*_*nta 1 c# generics .net-core
我有几节课ClassA,ClassB.
我想将类型传递给通用函数,例如:
var myTypeToPass=new ClassA();
using(var context=_contextFactory.CreateDbContext())
{
var test = context.Set<Here is myTypeToPass>();
}
Run Code Online (Sandbox Code Playgroud)
是否可以?
这个想法是为相同的测试保留相同的代码,但使用不同的实体。
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)
请注意此处如何推断类型参数。