专门针对通用

时间:2020-04-26 09:55:53

标签: c# generics

我有一个通用的方法,看起来像这样:

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之类的参数吗?我应该放弃使用泛型,尝试使用多态吗?

0 个答案:

没有答案