gpt4 book ai didi

c# - .NET 生成通用方法 - 紧凑的框架

转载 作者:太空狗 更新时间:2023-10-29 17:59:28 25 4
gpt4 key购买 nike

这是我正在寻找生成通用委托(delegate)的方法的原始问题: .Net generate generic methods

下面是在 .NET 3.5 中生成通用委托(delegate)的代码:

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

这在 .NET 3.5 中有效,但现在当我尝试移植到紧凑型框架 3.5 时,Delegate.CreateDelegate 方法需要第三个参数......参数描述说:

it should be the first argument, or 'the object to which the delegate is bound'.

我尝试将“obj”、“this”和 null 放在那里,但我总是得到无效参数异常。

有什么想法吗?

最佳答案

不幸的是,.NETCF(.NET Compact Framework)不支持与 .NET(完整框架)相同的方法签名,因为只实现了一个子集。

您可以在 MSDN library 上看到这个其中十个方法重载中只有一个是“受 .NET Compact Framework 支持”,用 PDA/移动设备的小图形表示。

CreateDelegate method

这意味着您必须使用Delegate.CreateDelegate(Type, Object, MethodInfo)在 .NETCF 中。

关于c# - .NET 生成通用方法 - 紧凑的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16614168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com