将对象作为方法中的参数传递

时间:2011-08-12 16:18:58

标签: c# wcf

我正在开发一个C#项目。 我有一个Nameclass类,其中包含一些属性(名字,姓氏)。 在dept类中,我已经实例化了Nameclass,并为firstname和lastname分配了一些值。 现在在dept类中,我调用属于Order类的另一个方法setValues()。 在这个方法中,我传递了这个NameClass和其他一些vlaues。 代码看起来像这样。

Order.setValues(nameObject, address, city, state,zip)

现在在Order Class中,当我尝试访问属性时 nameObject它没有显示任何特性。 为什么我没有在Order类中获取名字和姓氏值。 我是否必须在Order类中再次实例化NameClass以获取属性。 如果你能告诉我我在这里犯了什么错误,我感激不尽。

3 个答案:

答案 0 :(得分:2)

您没有展示您的代码,但有一些可能性,包括:

  1. 确保您的setValues方法使用正确的类型传递第一个参数,即:void setValues(NameClass name, string address, ...,而不使用void setValues(object name, ...
  2. 确保NameClassfirstnamelastname)中的属性或字段未标记为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#无法知道对象中的成员。