Что именно ты хочешь делать в любом случае? Хотите обновить свойство объекта в списке или другой объект, который является копией объекта в списке, но с другим именем?
В качестве альтернативы предоставлению метода клонирования вы можете предоставить конструктор копирования.
var newObj = new MyObj(List[2]);
newObj.Name = "fred";
вы можете сделать это за один звонок, в зависимости от того, что вы хотите сделать. Если вы знаете, что вы всегда будете создавать копию с другим именем, тогда вы можете сделать что-то вроде
var newObj = new MyObj(List[2],"fred");
и установите имя во время строительства.
но без явного создания нового объекта вы не сможете делать то, что хотите.
Имейте в виду, что если у вашего объекта есть свойство, являющееся другим объектом, вы можете столкнуться с проблемой «глубокого копирования» (именно поэтому IClonable не рекомендуется), как и то, что вы делаете, когда вам нужно скопировать этот объект ты новенький? Вы просто предоставляете ссылку на тот же экземпляр? Или вы тоже это копируете? Что если у этого объекта нет метода клонирования / конструктора копирования, что вы тогда будете делать?