簡體   English   中英

.NET生成泛型方法 - 緊湊框架

[英].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的小圖形表示。

CreateDelegate方法

這意味着您必須在.NETCF中使用Delegate.CreateDelegate(Type,Object,MethodInfo)

請查看以下鏈接中的示例部分,看看它是否有幫助。

http://msdn.microsoft.com/en-us/library/74x8f551.aspx

問候,

查希爾汗

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM