Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
305 views
in Technique[技术] by (71.8m points)

c# - Get instance of containing class

Is it possible to access an object from a member object without passing and storing a reference? In the example below, could a given chair object get access to the house object without the house having to pass its reference down the members hierarchy?

public class Chair {
    public string Material { get; set; }

    public Chair() {
       Material = "Wood";
    }

    public bool IsInMiami() {
       // Get instance of House where chair is found
       House house = ... // Reflection?
       return house.City.Equals("Miami");
    }
}

public class Room {
    private List<Chair> _chairs;

    public Room() {
       _chairs = new List<Chair>();
       _chairs.Add(new Chair());
    } 
}

public class House {
    private List<Room> _rooms;
    public string City { get; set; }

    public House() {
       _rooms = new List<Room>();
       _rooms.Add(new Room());
       City = "Orlando";
    }
}

The answer could be via reflection but I don't have a clue how to do it, or is there another way to achieve the same.

Thanks in advance

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There is no way to do that without the Chair having a reference to the House. From the point of view of the Chair, there is no relationship between it and a House. In fact, the Chair could belong to many Houses, or no Houses.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...