【发布时间】:2016-05-12 15:07:45
【问题描述】:
错误:'object' 不包含'lp' 的定义并且没有扩展方法>'lp' 可以找到接受'object' 类型的第一个参数(您是否缺少> using 指令或程序集引用?
如果我尝试从我的对象中获取一个值,我会得到这个......
但是当我运行而不试图获取值时,我可以清楚地看到我的对象确实包含 lp...
反序列化的完整代码...
public object Deserialize(Object obj, string path)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
StreamReader reader = new StreamReader(path);
obj = serializer.Deserialize(reader);
reader.Close();
return obj;
}
人物类...
public class Person
{
public string name { get; set; }
public int age { get; set; }
}
PersonList 类...
public class PersonList
{
public List<Person> lp = new List<Person>();
public void AddPerson(Person p)
{
lp.Add(p);
}
}
这是我发送到公共类 PersonList 的人员列表的一个实例
{
public List<Person> lp = new List<Person>();
public void AddPerson(Person p)
{
lp.Add(p);
}
}.
更新:我之前进行过强制转换,但我将传入大量不同类型的对象,因此需要一个通用的反序列化函数。有没有办法做到这一点? -
【问题讨论】:
-
XmlSerializer.Deserialize()返回object(它是在泛型不是 .NET 的一部分时引入的)。只需将其转换为obj类型:var obj = (PersonList)serializer.Deserialize(reader);变量正确包含该类型的实例,但编译器在编译时无法知道它。