我在加載和編譯現有類的新版本時遇到了問題。當他們被加載時,他們沒有任何參考。 「Test.Extended」類擴展了「Test.Base」類。 「Extended」類調用類「Base」上的ClassMethod。問題在於,即使在加載並對兩個類執行強制編譯後,被調用的「Base」中的ClassMethod也是而不是新編譯類中的方法,但是它的較舊版本(通過寫入控制檯)。如何讓IntersystemsCaché使用新編譯的類而不是舊版?
要編譯兩者,我使用的來自終端的以下命令(F:指力,C:編譯裝置加載時):
NAMESPACE>w $system.OBJ.Load("C:\Test.Base.cls.xml","fc")
Load started on 01/27/2009 10:10:34
Loading file C:\Test.Base.cls.xml as xml
Imported class: Test.Base
Compiling class Test.Base ..................
Compiling routine Test.Base.1
Load finished successfully.
1
NAMESPACE>w $system.OBJ.Load("C:\Test.Extended.cls.xml","fc")
Load started on 01/27/2009 10:10:34
Loading file C:\Test.Extended.cls.xml as xml
Imported class: Test.Extended
Compiling class Test.Extended ..................
Compiling routine Test.Extended.1
Compiling routine Test.Extended.2
Load finished successfully.
1
我們需要這兩個文件被加載並自動編譯由系統,但我們不能這樣做,因爲系統繼續使用舊版本。有人有關於如何強制IntersystemsCaché使用最新版編譯類的想法嗎?
感謝, 路易斯
就像那樣對我有用。我加載每個類而不編譯它們,並且使用標記「fabr」(強制,包含應用程序類,包括子類,遞歸)來編譯它們。 – 2009-03-19 19:29:27