Эти ответы всегда начинаются с «это зависит».
Люди, как правило, возражают против использования публичных статических методов, основанных на том, что их сложно издеваться над ними (я не покупаю в эту подножку).
Это сводится к дизайну, вы хотите, чтобы их сообщение было частью вашего класса? Если вы добавите его как конструктор «copy», то он теперь станет частью вашего класса, и вы зависите от изменений в сообщении. Если они меняют свой пост, ваш код должен адаптироваться.
Лучшее решение - отделить его. Вам нужно будет найти метод extenal для сопоставления двух. Один из способов - использовать метод статического построителя (как вы упомянули), или если вы хотите сделать это еще дальше, более сложным решением будет извлечение требуемой информации из вашего сообщения в какой-то тип общего класса коллекции. Затем создайте конструктор, который примет этот класс конструктора. Таким образом, если они изменят свой дизайн, ваш класс останется в тактике, и все, что вам нужно сделать, - это обновить сопоставления со своего поста до вашего общего представления.
public class MyPost{
public MyPost(ICollectionOfProperties props){
//copy all properties.
}
}
public static class TheirPostExtensions{
public static ICollectionOfProperties ExtractProperties(this TheirPost thePost){
return new CollectionOfProperties(){
A = thePost.PropA,
B = thePost.PropB
};
}
}
public class Example{
public Example(){
TheirPost tp = new TheirPost();
ICollectionOfProperties props = tp.ExtractProperties();
MyPost mp = new MyPost(props);
}
}
Не передавать. Делегат. –