Ошибка условия: свойство не объявлено. Может быть недоступен из-за уровня защиты - PullRequest
3 голосов
/ 26 мая 2010

У меня есть рабочий процесс, корневым действием которого является пользовательская 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 и AddImplementationChild.

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

1 Ответ

0 голосов
/ 14 июля 2011

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

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

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

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

Кто-нибудь из этих помогает? John

...