[英].NET generate generic method - compact framework
以下是我正在尋找生成泛型委托的方法的原始問題: .Net生成泛型方法
以下是在.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)
{
}
這適用於.NET 3.5,但現在當我嘗試移植到緊湊框架3.5時,Delegate.CreateDelegate方法需要第三個參數...參數說明說:
它應該是第一個參數,或者“委托綁定的對象”。
我嘗試將'obj'放在那里,'this'和null,我總是得到一個無效的參數異常。
有任何想法嗎?
遺憾的是,.NETCF(.NET Compact Framework)不支持與.NET(完整框架)相同的方法簽名,因為只實現了一個子集。
您可以在MSDN庫中看到這一點,其中十個方法重載中只有一個是“.NET Compact Framework支持”,用PDA / mobile的小圖形表示。
這意味着您必須在.NETCF中使用Delegate.CreateDelegate(Type,Object,MethodInfo) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.