Есть ли намного лучший способ создания глубоких и мелких клонов в C #?

Я создавал объект для проекта, и есть несколько случаев, когда мне нужно создать глубокую копию для этих объектов, я придумал использовать встроенную функцию для C #, которая является MemberwiseClone (). Проблема, которая беспокоит меня, заключается в том, что всякий раз, когда я создаю новый класс, мне нужно написать такую функцию, как приведенный ниже код, для мелкой копии. Может кто-нибудь помочь мне улучшить эту часть и дать мне мелкую копию, которая лучше чем вторая строка кода. Спасибо :)

МАЛЕНЬКАЯ КОПИЯ:

public static RoomType CreateTwin(RoomType roomType)
{
    return (roomType.MemberwiseClone() as RoomType);
}

ГЛУБОКАЯ КОПИЯ:

public static T CreateDeepClone<T>(T source)
{
    if (!typeof(T).IsSerializable)
    {
        throw new ArgumentException("The type must be serializable.", "source");
    }

    if (Object.ReferenceEquals(source, null))
    {
        return default(T);
    }

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new MemoryStream();
    using (stream)
    {
        formatter.Serialize(stream, source);
        stream.Seek(0, SeekOrigin.Begin);
        return (T)formatter.Deserialize(stream);
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос