Я хочу построить что-то вроде конвейера, где я могу поместить команды (преобразователи, считыватели, писатели ...) вместе, как линейный рабочий процесс и соединить их по заданным параметрам команд. Все должно быть сериализуемым, а чистый xml - обязательным, , потому что графический редактор не планируется на первом этапе, поэтому xml редактируется (с созданной схемой и поддержкой intellisense в VS это не боль).Конфигурируемые/динамические параметры
Пример:
<DataCommand name="AboFileReader">
<connection>
<parameter name="filename" direction="in" type="string">
<parameter name="tabledata" direction="out" type="DataTable">
</connection>
</DataCommand>
<DataCommand name="TrimConverter">
<connection>
<param name="tabledata" direction="in" type="DataTable" >
<param name="tabledata" direction="out" type="DataTable" >
</connection>
</DataCommand>
<DataCommand name="AboDataConverter">
<connection>
<param name="tabledata" direction="in" type="DataTable" >
<param name="tabledata" direction="out" type="DataTable" >
</connection>
</DataCommand>
<DataCommand name="AboSqlWriter">
<connection>
<param name="tabledata" direction="in" type="DataTable" >
</connection>
</DataCommand>
три различных способа, я могу сделать это прийти на мой взгляд, и все они имеют свои плюсы и минусы, и я не знаю, что выбрать.
Сначала я подумал, что 1. путь, но затем я придумал решение 3. потому что он дает чистый xml и является родным сериализуемым. Для следующего шага (редактора) привязка к GUI должна быть легкой, а propertygrid, делающий отражение, не является моим первым выбором (отражение всегда уродливо), наличие набора параметров может быть легко привязано к графическому интерфейсу.
Возможно, комбинация 1 и 3 - путь, чтобы собрать все параметры в коллекции при запуске?
1. Данные-аннотаций
[Parameter(Direction = "In", Description="...")]
public string FileName {get; set;}
[Parameter(Direction = "Out", Description="...")]
public DataTable Table {get; set;}
Плюсы: + родные параметры подвергаются + IntelliSense при кодировании
Минусы: - родной сериализации? - уродливый xml?
2. Workflow Foundation в стиле Windows
public InParameter<string> FileName {get; set;}
public OutParameter<DataTable> Table {get; set;}
Плюсы: + IntelliSense при кодировании + параметры подвергаются + сериализации работает
Минусы: - уродливый XML?
3. Сбор заполнила в конструкторе
ObservableCollection<Parameter> Parameters {get; set;}
public Init()
{
Parameters.Add(new Parameter() { Name="FileName", Type = typeOf(string), Direction="In", Description="..." });
Parameters.Add(new Parameter() { Name="Table", Type = typeOf(DataTable), Direction="Out", Description="..." });
}
Pros: + сериализация работает + чистый XML
Минусы: - параметры не отображаются в исходный код - не IntelliSense при кодировании
Каков ваш опыт и каков путь?
Это интересный вопрос. Он кажется немного шире, как он в настоящее время спросил, и может быть лучше подходит для такого сайта, как http://codereview.stackexchange.com/ – xDaevax