Любая причина, почему вы не могли сделать это вместо: -
List<MyType> myList = new List<MyType>();
MyType m1 = new MyType();
myList.Add(m1);
И тогда в основной программе вы можете получить все MyProperty из MyType, плюс у вас будет доступ к любой информации об объекте MyType, которая вам может понадобиться.
Идея немного похожа на это ... Я часто вижу, как разработчики создают такой метод
public void ProcessFoo(int idOfFoo){}
затем им понадобятся другие детали из объекта Foo, которые они добавляют к подписи
public void ProcessFoo(int idOfFoo, string name){}
Лучший подход (если не существует каких-то странных ограничений) - это просто передать весь объект Foo в первую очередь ...
public void ProcessFoo(Foo foo){}
ммм, я не решаюсь дать какой-либо дополнительный «совет» без дополнительного контекста. Я уверен, что в контексте того, что вы делаете, это имеет смысл, но мне это кажется опасным.
Ответ Джона очень важен, поскольку один экземпляр A может быть назначен MyProperty MyType, тогда вы говорите, что экземпляр A также может принадлежать MyPropertyX и MyPropertyY.
Извините, стремленые, но какова цель клонирования объекта? Для меня должна быть очень веская причина для создания совершенно нового отдельного экземпляра ... тем более, что клонирование редко реализуется хорошо для всех, кроме самых простых объектов (возможно, есть веская причина, я просто не вижу этого из примера).