我有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