Ссылка на внутренний класс из Windows Workflow Activity
Я создаю пользовательское действие Workflow для использования в TFS2010. В той же сборке у меня есть активность XAML и код C#. XAML-действие ссылается на кодовое действие.
Когда сборка развернута на наших клиентах, я только хочу, чтобы они могли использовать действие Workflow. Кодовая деятельность сама по себе мало полезна и, несомненно, запутает их.
Я подумал, что логичным способом сделать это будет установить внутренний класс активности кода: XAML находится в той же сборке и должен иметь доступ к нему. Однако, когда я делаю это, я получаю сообщение об ошибке в XAML о том, что тип не может быть найден в сборке.
Есть ли способ сделать деятельность внутренней / скрытой?
1 ответ
Это общая проблема с XAML во всех его формах. Это вызвано тем фактом (упомянутым в одном из комментариев), что синтаксический анализатор не находится в той же сборке, поэтому не имеет доступа к внутренним компонентам вашей сборки.
Обходной путь, который я видел чаще всего, состоит в том, чтобы просто выделить то, что вы хотели бы иметь как внутреннее, в собственном пространстве имен. По крайней мере, тогда ваших потребителей обычно не беспокоят запутанные типы, которые им не нужны. В WPF это пространство имен обычно является основным пространством имен с добавленным к нему ".Primitives". например, System.Windows.Controls.Primitives.
Другой способ, который вы могли бы исследовать, - это использовать пользовательский NativeActivity, а не XAML. Предположительно, для этого могут использоваться внутренние классы, поскольку синтаксический анализатор XAML не задействован. Я не проверял это все же.