我想通过从网络流反序列化来构建一个类。
public Anfrage(byte[] dis)
{
XmlSerializer deser = new XmlSerializer(typeof(Anfrage));
Stream str = new MemoryStream();
str.Write(dis, 0, dis.Length);
this = (Anfrage)deser.Deserialize(str);
}
目的是我只想传递byte []并拥有一个合适的对象,而不是使用另一个类中的方法。
现在,我知道我显然不能做 this = 。
我已阅读this question,目前正在阅读其中提到的文章,但我不确定我是否正确理解它。
我的意图是否足够明确?
有没有办法做我想在这里完成的事情?
谢谢大家。
答案 0 :(得分:12)
您不能通过分配this
来覆盖类本身中的对象。
例如,您可以创建返回新实例的方法:
public static Anfrage Create(byte[] dis)
{
XmlSerializer deser = new XmlSerializer(typeof(Anfrage));
Stream str = new MemoryStream();
str.Write(dis, 0, dis.Length);
return (Anfrage)deser.Deserialize(str);
}
然后你可以像这样实例化一个:
var anfrage = Anfrage.Create(bytes);
答案 1 :(得分:3)
通常用这个问题处理一个返回Object的静态非构造函数。
public static Anfrage Create(byte[] dis)
{
XmlSerializer deser = new XmlSerializer(typeof(Anfrage));
Stream str = new MemoryStream();
str.Write(dis, 0, dis.Length);
return (Anfrage)deser.Deserialize(str);
}
如果你想拥有一个新对象并对其进行编辑,请将构造函数设置为private而不是public,并使用静态构造函数访问它