如何在内部类中访问外部类变量

时间:2010-10-19 19:14:21

标签: c# class properties

好的,我正在创建一个包含很长路径来获取变量的类的包装器。例如,它具有以下内容:

Class1.Location.Point.X
Class1.Location.Point.Y
Class1.Location.Point.Z
Class1.Location.Curve.get_EndPoint(0).X
Class1.Location.Curve.get_EndPoint(0).Y
Class1.Location.Curve.get_EndPoint(0).Z
Class1.Location.Curve.get_EndPoint(1).X
Class1.Location.Curve.get_EndPoint(1).Y
Class1.Location.Curve.get_EndPoint(1).Z

现在,在我的包装器中,我想将其简化为:

Wrapper.X
Wrapper.Y
Wrapper.Z
Wrapper.P0.X
Wrapper.P0.Y
Wrapper.P0.Z
Wrapper.P1.X
Wrapper.P1.Y
Wrapper.P1.Z

我的包装器看起来像这样:

public class Wrapper
{
    protected Class1 c1 = null
    public Wrapper(Class1 cc1)
    {
         c1 = cc1;
    }

    public int X
    {
            get{return C1.Location.Point.X;}
    }
    public int Y
    {
            get{return C1.Location.Point.Y;}
    }
    public int Z
    {
            get{return C1.Location.Point.Z;}
    }
}

现在我的问题是P0.X和cie。我不知道怎么做。我试过一个子类,但它不允许我访问我的变量c1。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

好吧,我想通了(似乎我需要在这里发一个问题来自己弄清楚我的东西)。

是相当基本的东西,我不明白为什么我没有更快地弄明白。

我创建了一个子类Point0(Class1 c1)并在我的Wrapper中添加了一个名为point0的变量Point0和一个名为P0的返回point0的属性,因此它给了我Wrapper.P0.X

答案 1 :(得分:0)

两种想法可以获得与您所寻找的相似的东西。 您可以在Wrapper上实现索引属性

class Wrapper{
  public int this[int index]{
    get{ return C1.Location.Curve.get_EndPoint(index); }
  }
}

这会让用户通过以下类似的方式调用它:

Wrapper[0].X

或者,如果你真的想拥有“P0”和“P1”的属性,你可以让它们返回get_EndPoint(int)返回的对象(正如Frederic在他的评论中所建议的那样)。

class Wrapper{
  public EndPoint P0{
    get{ return C1.Location.Curve.get_EndPoint(0); }
  }
}