我在理解 C# 中容器/组件模型如何相互交互时遇到了一些困难。我知道组件如何包含一个站点对象,该对象具有有关容器和组件的信息。但是,假设我有以下代码:
using System;
using System.ComponentModel;
public class Entity : Container {
public string Foo = "Bar";
}
public class Position : Component {
public int X, Y, Z;
public Position(int X, int Y, int Z){
this.X = X;
this.Y = Y;
this.Z = Z;
}
}
public class Program {
public static void Main(string[] args) {
Entity e = new Entity();
Position p = new Position(10, 20, 30);
e.Add(p, "Position");
}
}
这没有问题,它定义了一个容器(实体)和一个包含在其中的组件(位置)。
但是,如果我调用p.Site.Container
,它将返回 Entity,但作为 IContainer。也就是说,(Console.WriteLine(p.Site.Container as Entity).Foo);
如果我想访问 Foo,我必须明确地做一些事情。这似乎相当麻烦。
我错过了什么,还是有更好的方法来做我想做的事?