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 に答える