C# 从类创建的对象";“对象”;不允许检索属性值
我有一个从类“object”创建的对象,它包含我创建的列表。该列表是从名为“MyClass”的类创建的对象的集合。并且,该类包含两个字符串属性C# 从类创建的对象";“对象”;不允许检索属性值,c#,object,reflection,propertyinfo,C#,Object,Reflection,Propertyinfo,我有一个从类“object”创建的对象,它包含我创建的列表。该列表是从名为“MyClass”的类创建的对象的集合。并且,该类包含两个字符串属性 public Class MyClass { private string _propOne; public string PropOne { get {return _propOne;} set {_propOne=Value;} } private string _propTwo
public Class MyClass
{
private string _propOne;
public string PropOne
{
get {return _propOne;}
set {_propOne=Value;}
}
private string _propTwo;
public string PropTwo
{
get {return _propTwo;}
set {_propTwo=Value;}
}
}
我有一个方法,它返回一个“object”类的对象
然后我调用如下所示的方法
object temp=GetData();
现在我想迭代“temp”,并将其分配给从类“MyClass”的对象创建的另一个列表
private List\u另一个集合;
公开列出其他收藏
{
获取{return\u其他集合;}
设置{uAnotherCollection=Value;}
}
........................
foreach(temp.GetType().GetProperties()中的变量a)
{
object firstParam=“PropOne”;
对象secondParam=“PropTwo”;
Add(new MyClass(){PropOne=a.GetValue(firstParam),PropTwo=a.GetValue(PropTwo)});
}
但它给了我以下编译错误
无法将类型“object”隐式转换为“string”。存在显式转换(是否缺少强制转换?)
有人能帮我修一下吗 您必须将返回的对象从
GetValue
强制转换为string
。编译器不知道从GetValue
返回的对象
实际上是一个字符串
,因此您必须这样告诉它
此外,您还必须传入您试图获取其值的实例(temp
,在本例中):
GetValue
需要字符串作为参数,您正在传递一个对象
。将object firstParam=
更改为string firstParam
,对于secondParam
也是如此。现在出现了一个异常,即“object not match target type”(对象与目标类型不匹配),您是否在第二次调用中也使用了temp
?否。我唯一使用“temp”的地方是在foreach循环中。那是我唯一去过的地方。它也不起作用。没有错误。但是这个集合包含的是一些数字,这不是我想要的。Add(new MyClass(){PropOne=(a.GetValue(temp)).ToString(),PropTwo=(a.GetValue(temp)).ToString()});那么您检索到的属性(a
)是什么?
object temp=GetData();
private List<MyClass> _anotherCollection;
public List<MyClass> AnotherCollection
{
get {return _anotherCollection;}
set {_anotherCollection=Value;}
}
........................
foreach (var a in temp.GetType().GetProperties())
{
object firstParam = "PropOne";
object secondParam = "PropTwo";
AnotherCollection.Add(new MyClass() { PropOne = a.GetValue(firstParam), PropTwo = a.GetValue(PropTwo) });
}
PropOne = (string)a.GetValue(temp)