Что ж, единственная причина, по которой GetFields будет пустым, заключается в том, что «для текущего Типа не определены открытые поля» (из MSDN ).
В общем, знаете ли вы, чтоуже существует защищенный метод в классе Object, который уже делает то, что вы пытаетесь сделать (поверхностная копия)?Он называется MemberwiseClone
Вы можете использовать его следующим образом:
public object Clone()
{
return MemberWiseClone();
}