Я не совсем уверен, что правильно понял вопрос.
Но если вы создадите объект на основе другого объекта, то вам придется передать исходный объект другому методу.
Может быть, это поможет
//Your class
public class Foo
{
public string Value { get; set; }
}
//Your method
private T CreateItem<T>(List<T> poList, string psValue) where T : class, new()
{
T loNew = new T();
if (loNew is Foo)
(loNew as Foo).Value = psValue;
return loNew;
}
Тогда вы можете использовать эти методы:
List<Foo> loList = new List<Foo>();
loList.Add(this.CreateItem(loList, "1"));