0

我有一个通用类,我想在其中保存一个使用 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)

4

2 回答 2

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)
{
    \\...
}

但是,如果在所有情况下您都将拥有相等的 in 和 out 类型参数,您可以将其简化为:

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

private static GetValueDefault<bool> getValueDefault = afoo;
于 2013-01-15T00:08:56.747 回答
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;
    }
}
于 2013-01-15T05:36:51.463 回答