我如何获得C#来推断我的通用类型?

时间:2019-07-02 11:46:12

标签: c# generics

我有一堂课

public class CatResult<T> where T : class
{
    public T SomeProperty { get; set; }

    public CatResult(T someProperty)
    {
        SomeProperty = someProperty;
    }
}

我想稍后再将其作为更一般的AnimalResult返回,它是相同的,尽管以后我会添加其他属性:

public class AnimalResult<T> where T : class
{
    public T SomeProperty { get; set; }
}

最初我是这样做的:

return new AnimalResult<KittyCat>(_someRepo.GetCatResult().SomeProperty);

但是我实际上并不介意他们被耦合。我希望做这样的事情:

return AnimalResult.FromCatResult(_someRepo.GetCatResult());

但是C#要求我输入type参数,即:

return AnimalResult<KittyCat>.FromCatResult(_someRepo.GetCatResult());

我认为我可以创建另一个没有任何泛型类型参数的类,称为AnimalResult,并在其上放FromCatResult,但这是行不通的,因为它需要知道T为返回类型

有没有一种方法可以自动推断出type参数?

0 个答案:

没有答案