Рабочие процессы XAML, зависящие от культуры, в Windows Workflow 4.0

Я создал простой рабочий процесс XAML с одним InArgument со значением по умолчанию 1,234. Если я затем переключу свой компьютер на французский (Франция) в региональных и языковых параметрах и попытаюсь загрузить рабочий процесс в представление дизайна VS, я получаю сообщение об ошибке:

«Не удалось создать «InArgument» из текста «1.234».

Глядя на XAML, я вижу, что атрибут this:Activity1.arg1="1.234" вызывает проблему. Затем я попытался создать эквивалентный рабочий процесс XAML с нуля, используя VS, все еще работая с французскими настройками, и полученный XAML отличается - атрибут таков: Activity1.arg1="[1.234]".

Это вызывает у меня две проблемы:

1) Наши конечные пользователи не смогут отправлять файлы XAML другим пользователям, работающим с другими региональными настройками.

2) Два файла XAML десериализуются в разные графы объектов - в первом случае я получаю литерал, а во втором случае я получаю VisualBasicValue. Затем мне нужно кодировать различия, когда я управляю рабочим процессом программно.

Есть ли простой способ избежать этого, гарантируя, что XAML всегда записывается/читается в нейтральной культуре?


person Akash    schedule 27.07.2011    source источник


Ответы (1)


Вы можете программно изменить Thread.CurrentCulture на инвариантная культура. Это можно сделать временно, пока рабочий процесс загружается.

person petr k.    schedule 13.09.2011
comment
Это то, что я в конечном итоге сделал, но это не очень хороший обходной путь, потому что клиенты все еще могут создавать рабочие процессы с помощью Visual Studio, работая в неинвариантной культуре. - person Akash; 15.09.2011