2010-05-26 2 views
3

У меня есть рабочий процесс, чья корневая активность - это обычная NativeActivity с общедоступным InArgument под названием XmlData. Когда я пытаюсь использовать этот аргумент в детстве Если деятельность я получаю следующее сообщение об ошибке с помощью 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); 
    } 

Я добавляю аргумент внутри CacheMetadata с использованием метода metadata.AddArgument, и я попытался добавить свойство ребенка она с использованием как AddChild d AddImplementationChild.

Если я заменил свою собственную деятельность ActivityBuilder и использовал код для создания DynamicActivityProperty, тогда условие можно скомпилировать успешно, поэтому я не вижу, что мне не хватает, когда я использую свой собственный код.

+0

Обмен некоторыми кодами был бы полезен. – Maurice

+0

Извините, что не добавлял их для начала. Теперь они добавлены. – Stoive

+0

Что произойдет, если вы закомментируете функцию CacheMetadata? Реализация по умолчанию должна быть достаточно хорошей. Также есть CustomObj общедоступный тип? Предположение об ошибке является внутренним. – Maurice

ответ

0

Есть 3 возможных решения, о которых я могу думать, один из них глупый, один из них хаки, а другой смутно разумный.

Решение 1 (глупое) Продвигайте RuntimeArgument частному члену readonly и обменивайте вызовы Bind и AddArgument, у меня было несколько случайных случаев, когда это помогло.

Решение 2 (очень Hacky один) Вы всегда можете поместить значения в именованном свойстве от контекста и вытащить его в ребенке

Решение 3 (толковые один) Если вы хотите передать InArgument для ребенка, привяжите его к переменной и привяжите дочерний элемент к переменной.

Любой из них поможет? John