解析通过委托[duplicate]传递的方法的通用类型

问题描述 投票:1回答:1

在我的代码中,我试图动态解析哪个类型参数应用于通用方法调用。

    private int FooResolver<T1, T2>(bool condition, Func<int> fooMethod)
    {
        if (condition)
        {
            return fooMethod<T1>();
        }

        return fooMethod<T2>();
    }

我创建了一个包装方法,该方法接受两个类型参数,并根据条件决定使用哪个参数。但是,似乎C#不允许这种行为。有什么特殊原因吗?我的代码是否有可行的解决方法?

编辑

看到响应后,我决定将类型定义推迟到处理程序方法的调用者:

private int FooResolver(bool condition, Func<int> foo1, Func<int> foo2)
{
    if (condition)
    {
        return foo1();
    }

    return foo2();
}

...

private int Bar()
{
    return FooResolver(myCondition, MyMethod<FirstType>, MyMethod<SecondType>);
}
c# generics .net-core delegates
1个回答
2
投票

委托不是打开通用方法或方法组的抽象;它们是对specific

© www.soinside.com 2019 - 2024. All rights reserved.