C# 使用一些代码来克隆对象,但我还需要这些代码来调用构造函数,它不需要';T

C# 使用一些代码来克隆对象,但我还需要这些代码来调用构造函数,它不需要';T,c#,serialization,C#,Serialization,我一直在处理以下代码(来自): 公共静态T克隆(此T源) { var dcs=new System.Runtime.Serialization.DataContractSerializer(typeof(T)); 使用(var ms=new System.IO.MemoryStream()) { dcs.WriteObject(ms,源); ms.Seek(0,System.IO.SeekOrigin.Begin); 返回(T)dcs.ReadObject(ms); } } 这很好用…除了它不

我一直在处理以下代码(来自):

公共静态T克隆(此T源)
{
var dcs=new System.Runtime.Serialization.DataContractSerializer(typeof(T));
使用(var ms=new System.IO.MemoryStream())
{
dcs.WriteObject(ms,源);
ms.Seek(0,System.IO.SeekOrigin.Begin);
返回(T)dcs.ReadObject(ms);
}
}

这很好用…除了它不调用构造函数。基本上,我有一个构造函数,它不接受我希望上面的代码调用的参数。有办法调用该构造函数吗?

试试这个,你可以实现
序列化来进行初始化,这是你的选择之一:

[OnDeserializing]
void OnDeserializing(StreamingContext c)
{
    //create what is required here
}

我已经编辑了你的标题。请参阅“”,其中一致意见是“不,他们不应该”。我不知道原始标题是什么,但编辑的标题毫无意义。如果类实现了
ISerializable
构造函数
ctor(SerializationInfo,StreamingContext上下文)
将被调用。唯一的问题是类是自动创建的,而公共构造函数调用私有方法。所以即使我这样做了,我仍然不能调用那些自动创建的私有方法。
[OnDeserializing]
void OnDeserializing(StreamingContext c)
{
    //create what is required here
}