我正在开发一个C#项目。 我有一个Nameclass类,其中包含一些属性(名字,姓氏)。 在dept类中,我已经实例化了Nameclass,并为firstname和lastname分配了一些值。 现在在dept类中,我调用属于Order类的另一个方法setValues()。 在这个方法中,我传递了这个NameClass和其他一些vlaues。 代码看起来像这样。
Order.setValues(nameObject, address, city, state,zip)
现在在Order Class中,当我尝试访问属性时 nameObject它没有显示任何特性。 为什么我没有在Order类中获取名字和姓氏值。 我是否必须在Order类中再次实例化NameClass以获取属性。 如果你能告诉我我在这里犯了什么错误,我感激不尽。
答案 0 :(得分:2)
您没有展示您的代码,但有一些可能性,包括:
setValues
方法使用正确的类型传递第一个参数,即:void setValues(NameClass name, string address, ...
,而不使用void setValues(object name, ...
。NameClass
(firstname
和lastname
)中的属性或字段未标记为private
,而是public
(或{{ 1}}如果你在同一个项目中。)答案 1 :(得分:0)
我认为发生这种情况的原因是因为您的Order.setValues()
方法具有以下签名:
public static void setValues(object nameObject, string address, string city, string state, string zip)
如果我的估计是正确的,那么答案很简单。您的对象被视为类型对象而不是类型NameClass
。您无法在编译时知道基础类对象中的哪些属性不包含Reflextion。
解决方法是简单地更改方法中nameObject参数的类型以键入NameClass
...所有这些都假设我的假设是正确的。
答案 2 :(得分:0)
您已将参数声明为类型对象,或者数据成员不是公共的。在前一种情况下,VC#无法知道对象中的成员。