У меня есть несколько классов контрактов данных, таких как:
[DataContract]
public class FooData
{
[DataMember]
public string Name;
// ... many more members
public FooData (string name) // again, many more arguments
{
Name = name;
// ...
}
}
Поскольку FooData
всегда используется для транспортировки объектов Foo
по проводам, я хотел бы добавить конструктор, который принимает объект Foo и устанавливает все поля соответственно вместо того, чтобы делать это вручную (new FooData (myFoo.Name)
).
Однако для этого пользователю FooData необходимо включить тип Foo, который должен быть внутренним по отношению к серверу. Обычно эту проблему можно было бы решить, если бы конструктор принял Foo внутри, но в моем случае FooData находится в сборке, отличной от Foo.
Как мне с этим бороться? Мои мысли до сих пор включают использование интерфейса вместо класса для передачи данных или использование «конструктора расширения». Есть идеи получше?