我有2个包含另一个类属性的类。从堆中获取先前实例化的对象以获取变量引用
public class Client
{
public Customer Customer { get; set; }
public Client()
{
}
}
public class Customer
{
public Client Client { get; set; }
public Customer(int id)
{
// some retrieval logic by using id ...
}
}
这是一个工厂类,显示了我想要在编译时间之前知道对象的想法。实际上,我不需要通过用户提供的数据进行反射来实例化它们。现在,考虑到这一点,我找对象的属性分配的相反类以前创建的对象,其他类(即像下图)
public class Factory
{
public Factory()
{
// this is all done via reflection at run-time in my real code
Client client = new Client();
client.Customer = new Customer(1); // id would be retrieve from a client property (not shown for simplicity sake)
client.Customer.Client = client; // refer to the first object of client
}
}
然而,利用先前提供的工厂类例如,我的代码中的客户端对象不在作用域中,或者在堆栈中更高(各种属性都以递归方式实例化,并且如果较高类在子类/对象中具有相同类型的属性,则它将被跳过(以避免无限递归)
如何在工厂方法中利用类名称或任何对象的属性将属性指向先前实例化的对象(可能不是)在适用范围?
我正在考虑使用列表/字典来存储更高级别的对象引用,并通过递归将它们传递下来,并检查对象的类型是否匹配子后续属性的类型,然后只使用存储在该属性的列表/字典。我想看看这是最好的方式还是另一种方式。
这是纯粹的理论,可能会或可能不会被使用。目标是任何时间和对象都是从这些类创建的,所有相关的类在第一个对象中都包含属性,这些属性包含从不为空/不会无限回避的相关类的实例化实例。
答案在问题中。 – Guillaume
@Guillaume谢谢,我知道,但我只是想知道这是最好的方式,还是有更好的方法。 – B1313