【问题标题】:Access members of inner class in c#在c#中访问内部类的成员
【发布时间】:2014-03-04 13:52:37
【问题描述】:

我试图找到这个看似简单的任务的方法,但没有成功。抱歉,我是 oop 和 c# 的新手。如果它是微不足道的,请原谅。
我必须在下面的课程中访问verb

public class testclass
{
 public class selector
  {
    public static string verb { get; set; }
  }
  //some other classes here
 }

一个 api 类反序列化并返回一个 testclass 对象。

var res = apicall(); //retruns testclass object

我想访问动词并检索它的值。如何做到这一点?

【问题讨论】:

  • 你在创建 Selector 实例后尝试过 :Selector.Verb 吗?
  • @Zaphod testclass 有一个单独的类文件。我必须在我得到 res 对象的不同文件中访问动词。我该怎么做。 Selector.verb 直接无效。
  • testclass.selector.verb 是有效的 - 尽管您应该修复名称以匹配正常的命名约定:)
  • @NWard:不,你绝对不需要需要创建selector的实例; verb 是静态属性。
  • 你说得对,我误读了OP的代码并删除了我的评论。

标签: c# .net class serialization deserialization


【解决方案1】:

由于这是一个 静态 属性,您可以按以下方式访问它:

string str = testclass.selector.verb;

请注意,访问与apicall()返回的实例无关。


编辑:如果verb 不是静态成员,那么您需要在某处定义selector 的实例来访问该成员。例如:

public class TestClass
{
     public class Selector
     {
          public string Verb{ get; set; }
     }

     public Selector SomeSelector {get; set;}  
 }

现在你有一个selector 类型的成员,你可以像这样访问它:

 var res = apicall();
 var str = res.SomeSelector;

【讨论】:

  • 如何在该对象中获得返回值?
  • @Maxsteel 没有“在那个对象中”的值。由于verb 是一个静态属性,它的值独立于任何对象。
  • 知道了。假设它不是静态的,那么我该如何访问它呢?
  • mySelector 必须是公开的。
  • @gmailuser 通常,是的。除非您在 TestClass 方法/构造函数中;)
【解决方案2】:

您可以使用以下方式访问动词:

testclass.selector.verb

因为它是一个静态属性,这意味着它被定义为这个特定的类型,而不是一个对象。

但是,如果你想用 res 对象指向动词,你需要定义 res 变量的类型,否则编译器不会让你编译这段代码。示例:

testclass res = apicall();

【讨论】:

    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2018-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多