好的,我正在创建一个包含很长路径来获取变量的类的包装器。例如,它具有以下内容:
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。我怎么能这样做?
答案 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); }
}
}