我有一个通用的方法,看起来像这样:
void Foo<A, B>()
{
// Do some stuff with B, some conditionals, etc, e.g.:
using (var scope = _provider.CreateScope())
{
var service = scope.ServiceProvider.GetService<B>();
A result = service.Bar<A>();
}
// Do some more stuff with B
}
现在,我想使用Bar
的第二个特殊版本,它具有不同的返回类型,如下所示:
void Foo<A, B>() where A : List<A>
{
// Do the exact same stuff with B
List<A> result = service.Bar2<A>();
// Do other same stuff with B
}
Bar
方法可能类似于:
A Bar<A>()
{
return new A();
}
List<A> Bar2<A>()
{
return new List<A>();
}
在没有Bar
调用周围包含所有重复代码的情况下,我可以做些什么吗?我可以使用类似Func
之类的参数吗?我应该放弃使用泛型,尝试使用多态吗?