Я создавал объект для проекта, и в некоторых случаях я мне нужно создать глубокую копию для этих объектов. Я использовал встроенную функцию для 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);
}
}