将函数赋给泛型委托

时间:2013-01-15 00:03:06

标签: c# generics delegates assign

我有一个泛型类,我想在其中保存一个使用Type T作为参数并返回值的委托。如何为getValueDefault属性分配方法?

private delegate TOut GetValueDefault<in TIn, TOut>(string key, TIn defaultValue);

private GetValueDefault<T, T> getValueDefault = null;

例如,签名为bool ThirdPartyClass.foo(string key, bool defValue)

的方法

2 个答案:

答案 0 :(得分:1)

它应该像以下一样简单:

private delegate TOut GetValueDefault<in TIn, TOut>(string key, TIn defaultValue);

private GetValueDefault<int, bool> getValueDefault = afoo;

static bool ThirdPartyClass.foo(string key, int defValue)
{
    \\...
}

但是,如果在所有情况下您将拥有相同的输入和输出类型参数,您可以将其简化为:

private delegate T GetValueDefault<T>(string key, T defaultValue);

private static GetValueDefault<bool> getValueDefault = afoo;

答案 1 :(得分:0)

我认为你应该这样写:

class Sample<T>
{
    public delegate TOut GetValueDefault<in TIn, TOut>(string key, TIn defaultValue);

    private GetValueDefault<T, T> getValueDefault = null; 
    public Sample(GetValueDefault<T, T> del)
    {
        getValueDefault = del;
    }
}