Как получить доступ к переменной внешнего класса внутри внутреннего класса - PullRequest
0 голосов
/ 19 октября 2010

Хорошо, я делаю оболочку класса, который имеет очень длинный путь для получения переменных. Например, оно имеет следующее:

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 голосов
/ 19 октября 2010

Две идеи, чтобы получить что-то похожее на то, что вы ищете.Вы могли бы реализовать индексированное свойство в Wrapper

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

. Это может привести к тому, что пользователь, вызывающий это, будет выглядеть примерно так:

Wrapper[0].X

В качестве альтернативы, если вы действительно хотите иметь свойства "P0 "и" P1 ", вы можете просто заставить их возвращать объект, возвращенный get_EndPoint (int) (как Фредерик предложил в своем комментарии).

class Wrapper{
  public EndPoint P0{
    get{ return C1.Location.Curve.get_EndPoint(0); }
  }
}
0 голосов
/ 19 октября 2010

Ну, я понял (кажется, мне нужно опубликовать здесь вопрос, чтобы самому разобраться со многими вещами).

Был довольно простой материал, я не понимаю, почему я не понял это быстрее.

Я создал подкласс Point0 (Class1 c1) и добавил в свой Wrapper переменную Point0 с именем point0 и свойство с именем P0, которое возвращает point0, поэтому он дает мне Wrapper.P0.X

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...