2013-04-28 7 views
1

Когда я скомпилировать этот пример .proto файл с Protobuf-сети:Protobuf-сеть повторяющееся поле, как ObservableCollection <T>

message A 
{ 
    repeated float values = 1; 
} 

Сгенерированный файл содержит класс, который имеет свойство List<Single>. Есть ли способ использовать свойство ObservableCollection<Single> вместо List<Single>? На самом деле, причина такова: я хочу использовать сгенерированный класс непосредственно в приложении WPF, но немного сложно связать это свойство, потому что я не увижу никаких изменений в этом случае.

Может быть, для этого есть некоторые проблемы? Потому что в противном случае мне придется делать обертки для каждого класса, что не очень удобно.

EDIT: Я могу просто заменить все lists с observable collections внутри пакетных файлов, например, но это приведет к некоторым проблемам? Или это реальное решение для этого случая?

ответ

2

В настоящий момент инструмент кода-кода жестко закодирован до List<T>. Разумеется, инструмент code-gen также является полностью необязательным - так что один вариант: не работает из инструмента кода-кода (он отлично работает с рисованными DTO). Если вы счастливы просто сделать автоматическую замену, это прекрасно - он не будет расстраивать protobuf-net вообще. Но если вы сделаете этот лот, другой вариант - отредактировать файл csharp.xslt в каталоге генератора кода. Это файл xsl-transform, который генерирует код из xml-представления модели. Есть (IIRC) 3 вхождения global::System.Collections.Generic.List, которые вы можете изменить на все, что захотите. Вы можете либо переписать csharp.xslt, либо скопировать его в новый файл (и отредактировать его), а затем просто указать это как преобразование при вызове protogen.

Смежные вопросы