C# 将函数分配给泛型委托
我有一个泛型类,我想在其中保存一个使用类型T作为参数和返回值的委托。如何将方法分配给属性getValueDefaultC# 将函数分配给泛型委托,c#,generics,delegates,assign,C#,Generics,Delegates,Assign,我有一个泛型类,我想在其中保存一个使用类型T作为参数和返回值的委托。如何将方法分配给属性getValueDefault private delegate TOut GetValueDefault<in TIn, TOut>(string key, TIn defaultValue); private GetValueDefault<T, T> getValueDefault = null; 私有委托TOut GetValueDefault(字符串键,TIn defau
private delegate TOut GetValueDefault<in TIn, TOut>(string key, TIn defaultValue);
private GetValueDefault<T, T> getValueDefault = null;
私有委托TOut GetValueDefault(字符串键,TIn defaultValue);
私有GetValueDefault GetValueDefault=null;
例如,带有签名的方法
bool ThirdPartyClass.foo(字符串键,bool defValue)
应该简单到:
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)
{
\\...
}
私有委托TOut GetValueDefault(字符串键,TIn defaultValue);
私有GetValueDefault GetValueDefault=afoo;
静态bool ThirdPartyClass.foo(字符串键,int-defValue)
{
\\...
}
但是,如果在所有情况下,输入和输出类型参数都相等,则可以将其简化为:
private delegate T GetValueDefault<T>(string key, T defaultValue);
private static GetValueDefault<bool> getValueDefault = afoo;
private委托T GetValueDefault(字符串键,T defaultValue);
私有静态GetValueDefault GetValueDefault=afoo;
我认为你应该这样写:
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;
}
}
类示例
{
公共委托TOut GetValueDefault(字符串键,TIn defaultValue);
私有GetValueDefault GetValueDefault=null;
公共样本(GetValueDefault del)
{
getValueDefault=del;
}
}
在本例中,作为T
传递的泛型参数是什么?除非它是object
,否则我认为这是不可能的,因为string
和bool
与任何其他类型都不兼容。这只适用于bool
,如果t
是其他类型,我想分配(int)ThirdPartyClass.foo2(字符串键,int defaultValue)
在构造函数中。@MatthiasSchl我已经更新了我的答案,以便它与类型为int