因此,我想为我的类ignite.cluster().forServers().nodes()
cluster.forServers().nodes()
clusterGroup.nodes()
创建构造函数,该构造函数接受In EmployeeNodeClass
对象并使用Deepclone函数复制它:
EmployeeNodeClass
到新对象。
起初我以为它就像
一样简单public static T DeepClone<T>(T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T)formatter.Deserialize(ms);
}
}
但是后来我得到一个错误, public EmployeeNodeClass(EmployeeNodeClass EMPND)
{
this = DeepClone(EMPND);
}
是只读的。
那我该怎么办?
答案 0 :(得分:2)
可以使用NewtonSoft JsonConvert.PopulateObject:
示例:
Content : N
并使用它:
class Entity
{
public List<int> List { get; set; }
public Entity(List<int> list)
{
List = list;
}
public Entity(Entity original)
{
string originalJson = JsonConvert.SerializeObject(original);
JsonConvert.PopulateObject(originalJson, this);
}
}
注意:由于此命令使用NewtonSoft Json,因此它将仅克隆公共的可写属性。因此,私有字段(与此类属性不相关)中的内部状态将丢失。