Эти ответы всегда начинаются с «это зависит».
Люди, как правило, выступают против использования общедоступных статических методов, основываясь на том факте, что над ними трудно издеваться (я не покупаюсь на эту подножку).
Это сводится к дизайну, вы хотите, чтобы их пост был частью вашего класса? Если вы добавите его как конструктор «copy», то теперь он будет частью вашего класса, и вы будете зависеть от изменений в сообщении. Если они меняют свой пост, ваш код должен адаптироваться.
Лучшее решение - отделить его. Вам нужно было бы найти какой-нибудь экстенсивный метод для сопоставления двух. Одним из способов является использование метода статического компоновщика (как вы упомянули) или, если вы хотите сделать еще один шаг вперед, более сложным решением будет извлечение необходимой информации из их поста в некоторый тип универсального класса коллекции. Затем создайте конструктор, который будет принимать этот класс конструктора. Таким образом, если они меняют свой дизайн, ваш класс остается в такте, и все, что вам нужно сделать, это обновить отображения из их поста в ваше общее представление.
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);
}
}