我試圖從本質上便宜地引用基礎對象,以便稍後可以完全構建它,並且可以通過任何不直接涉及該對象的構建過程的任何內容輕鬆引用。然而,當我在構建過程中有一個合理構建的對象時(它實際上是一個創建其他對象的工廠,這些對象使用依賴於「a」的對象,並且在開關案例中構建這些對象是有意義的。)「new」後保留對象引用
我考慮過使用指針,但我認爲它們不合適。
using System;
namespace ConsoleApplication5
{
class ClassA
{
public virtual void hello()
{
Console.WriteLine("Hello World!");
}
}
class ClassB : ClassA
{
public override void hello()
{
Console.WriteLine("Goodbye World!");
}
}
class ClassC
{
ClassA m_object;
public ClassC(ClassA a)
{
m_object = a;
}
public void run()
{
m_object.hello();
Console.WriteLine(m_object.GetType().ToString());
}
}
class Program
{
static void Main(string[] args)
{
ClassA a;
ClassC c = new ClassC(a);
//switch(something)
//{
//case "somethingElse":
a = new ClassB();
c.run();
//...
//break;
//...
//}
//CompleteAGenericCollationTaskWith(a);
}
}
}
基本上:
我試圖:根據它從內部傳遞的對象的共享參考真實創建之前,到一個對象,所以我可以有(優選地)只讀訪問那第二個對象。
我懷疑它與a = new ClassB();
覆蓋引用有關,但我只有約60%確定是這種情況,不知道如何保留它,而不使用指針。
問題:
如何使這項工作?我是否需要改變我的結構(可能)?我可以在保持ClassA
和ClassB
的同時做到這一點,對ClassC
和Program
的變化很小?
難道你不能只在'switch'之後放置'c'的賦值嗎?那時候,你將會正確實例化'a'。 –
我在'c'內添加了依賴'a'的通用對象 - 'c'是一個工廠類,它查看'a'的一些屬性以幫助爲它構建驗證器 - 一些驗證器(如date驗證器)是特定於日期控件的,而必需的字段驗證器則是免費的(並且預期 - )將在之後創建。 – Izzy