2010-05-26 158 views
3

我有一個工作流,其根活動是一個帶有名爲XmlData的公有InArgument的自定義NativeActivity。當我嘗試和分配活動,我得到的條件中使用XMLDATA以下錯誤使用此參數在孩子:條件錯誤:未聲明屬性。由於其保護級別,可能無法訪問

'XmlData' is not declared. It may be inaccessible due to its protection level 

我的屬性是這樣的:

public Activity Body {get;set;} 
public InArgument<CustomObj> XmlData {get;set;} 

,這是CacheMetadata方法:

protected override void CacheMetadata(NativeActivityMetadata metadata) 
    { 
     var runtime = new RuntimeArgument("XmlData",typeof(CustomObj),ArgumentDirection.In,true); 
     metadata.Bind(this.XmlData,runtime); 
     metadata.AddArgument(runtime); 

     metadata.AddChild(Body); 
    } 

我使用metadata.AddArgument方法將內CacheMetadata的說法,我嘗試了它同時使用的addChild的添加子屬性d AddImplementationChild。

如果我用ActivityBuilder替換自定義活動並使用代碼創建DynamicActivityProperty,那麼可以成功編譯該條件,所以當我使用自己的代碼時看不到我缺少的內容。

+0

分享一些代碼會有幫助。 – Maurice 2010-05-26 10:26:10

+0

對不起,不加入他們開始。他們現在被添加。 – Stoive 2010-05-26 10:57:13

+0

如果註釋掉CacheMetadata函數會發生什麼?默認的實現應該足夠好。 CustomObj也是一個公共類型?錯誤提示是內部的。 – Maurice 2010-05-26 11:17:16

回答

0

我能想到的有三種可能的解決方案,一種是愚蠢的,一種是粗魯的,另一種是隱約理智的。

解決方案1(daft之一) 將RuntimeArgument推廣到一個私有隻讀成員,並將Bind和AddArgument調用交換,我已經在一些隨機發生的地方提供了幫助。

解決方案2(非常哈克之一) 您可以隨時把值命名屬性的情況下,將其拉出的孩子

溶液3(明智的) 如果你想傳遞將參數綁定到一個孩子,將其綁定到一個變量並將孩子綁定到該變量。

其中的任何幫助? John

相關問題