Как я могу вызвать MemberwiseClone ()? - PullRequest
8 голосов
/ 20 мая 2011

Я не совсем понимаю, как использовать метод MemberwiseClone().Я посмотрел пример в MSDN, и они используют его через ключевое слово this.

Почему я не могу вызвать его напрямую, как методы других объектов, такие как GetType() или ToString()?Другой связанный метод, который не появляется, это ShallowCopy().

Если они являются частью класса Object, почему я не могу их увидеть?

Ответы [ 2 ]

10 голосов
/ 20 мая 2011

Функция MemberwiseClone() имеет значение protected, поэтому вы можете получить к ней доступ только через спецификатор своего типа.

5 голосов
/ 30 сентября 2013

Вот пример, это то, что я сделал, и никаких проблем пока нет.

public class ModelBase
{
    public T ShallowCopy<T>() where T : ModelBase
    {
        return (T)(MemberwiseClone());
    }
}

И назовите это как:

var cloned = User.ShallowCopy<User>();
...