我有一个泛型类,我想在其中保存一个使用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)
答案 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;
}
}