C# .NET生成通用方法-精简框架

C# .NET生成通用方法-精简框架,c#,.net,generics,C#,.net,Generics,下面是我正在寻找生成一般委托的方法的原始问题: 以下是在.NET 3.5中生成通用委托的代码: public delegate void PropertyChangedDelegate<OwnerType, PropertyType>(OwnerType sender, String propertyName, PropertyType oldValue, PropertyType newValue); EventInfo eventInfo = type.GetEvent(pr

下面是我正在寻找生成一般委托的方法的原始问题:

以下是在.NET 3.5中生成通用委托的代码:

public delegate void PropertyChangedDelegate<OwnerType, PropertyType>(OwnerType sender, String propertyName, PropertyType oldValue, PropertyType newValue);

EventInfo eventInfo = type.GetEvent(property.Name + "Changed");
MethodInfo propertyChangedMethodInfo = this.GetType().GetMethod("content_PropertyChanged", BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo genericPropertyChangedMethodInfo = propertyChangedMethodInfo.MakeGenericMethod(eventInfo.EventHandlerType.GetGenericArguments());
Delegate delegate_ = Delegate.CreateDelegate(eventInfo.EventHandlerType, genericPropertyChangedMethodInfo);
eventInfo.AddEventHandler(obj, delegate_);

void content_PropertyChanged<OwnerType, PropertyType>(OwnerType sender, String propertyName, PropertyType oldValue, PropertyType newValue)
{
}
public委托void propertychangedelegate(OwnerType发送者、字符串propertyName、PropertyType oldValue、PropertyType newValue);
EventInfo EventInfo=type.GetEvent(property.Name+“已更改”);
MethodInfo propertyChangedMethodInfo=this.GetType().GetMethod(“content_PropertyChanged”,BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo genericPropertyChangedMethodInfo=propertyChangedMethodInfo.MakeGenericMethod(eventInfo.EventHandlerType.GetGenericArguments());
Delegate Delegate=Delegate.CreateDelegate(eventInfo.EventHandlerType,genericPropertyChangedMethodInfo);
eventInfo.AddEventHandler(对象、代表);
无效内容\u PropertyChanged(所有者类型发送者、字符串propertyName、PropertyType oldValue、PropertyType newValue)
{
}
这在.NET 3.5中有效,但现在当我尝试移植到compact framework 3.5时,Delegate.CreateDelegate方法需要第三个参数。。。参数说明显示:

它应该是第一个参数,或者“委托所指向的对象” “受约束”

我试着把'obj'和'this'放在那里,然后是null,我总是得到一个无效的参数异常


有什么想法吗?

请查看下面链接中的示例部分,看看是否有帮助

问候,

不幸的是,Zahir Khan.NETCF(.NET Compact Framework)不支持与.NET(full Framework)相同的方法签名,因为只实现了一个子集

您可以在上看到这一点,其中十个方法重载中只有一个“受.NET Compact Framework支持”,以PDA/mobile的小图形表示


这意味着你有要在.NETCF中使用。

紧凑型平台上的其他两个参数可能有问题吗?我在desktop.NET上用三个类似的参数尝试了完全相同的方法,结果成功了:Delegate Delegate\uu=Delegate.CreateDelegate(eventInfo.EventHandlerType,this,genericPropertyChangedMethodInfo);我仔细看了看,错误是:“不支持开放泛型方法的ReturnType”…hmmmI认为这个问题是相关的: