首先我是c#的初学者。我想对viewport类进行深度复制,所以我尝试以这种方式复制项目(如本文所述:here):
public static T Clone<T>(T source)
{
if (!typeof(T).IsSerializable)
{
throw new ArgumentException("The type must be serializable.", "source");
}
// Don't serialize a null object, simply return the default for that object
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);
}
}
但是类不是可序列化的,我不拥有它。所以我正在考虑在viewport类上添加一个扩展,以便添加一个可以将变量内容复制到新实例的方法,但我不确定这是好方法。
您有建议或其他解决方案吗?
感谢。