2011-08-25 12 views
6

'da en iyi şekilde ortaya çıkarmak En iyi Pascal DWScript'u kullanarak yerleşik bir komut dosyası özelliğini bir araya getiriyorum. Ben de kullanarak DWScript için kendi Delphi tarafı sınıfı tanımı (TDemo) ekleyin adres:Bir sınıf örneğini DWScript

dwsUnit.ExposeRTTI(TDemo.ClassInfo ) 

Bu sadece çalışır ve hızlı bir şekilde özellikleri ve yöntemleri ekleyerek bir yoldur.

Ben de benzer şekilde mevcut bir örneği eklemek istediğiniz, bu yüzden tipi TDemo benim örneğini FDemo oluşturulan ve daha sonra performans: Bu aramaya gelecek vaat eden rutin görünüyor

dwsUnit.ExposeInstanceToUnit('Demo', 'TDemo', FDemo); 

ama bir AV olsun başlatılmamış birim tablosundan. Ayrıca, bu işlevin kullanımını görmek için SVN kaynağının birim test koduna baktım ama boşuna. Beni eklemem/değiştirmem gereken şeyleri işaret eden var mı?

+0

Belki de bu birimin 'başlatma 'bölümüne bazı kodlar ekleyin? – Johan

cevap

4

ExposeInstanceToUnit TdwsUnit Tablo başlatma içinde kullanılması gereken, bir örnek kod için RTTIExposeTests/ExposeInstancesAfterInitTable bkz. Dinamik örnekleri doğrudan açığa çıkarmaya izin verir.

Diğer bir yaklaşım, bir TdwsUnit bileşeninin Örnekleri koleksiyonunu kullanmaktır; tasarım zamanı desteği ve örnekleriniz ve ömürleri üzerinde daha fazla denetim elde edersiniz.

Ayrıca, ortaya koyduğunuz örneklerin, betik yanlış çalışsa bile düzgün şekilde davranacağından emin olmanız gerektiğini unutmayın. Kullanıcı, maruz kaldığınız bir örneği el ile ele geçirmeye çalıştığında ve bu örnek yok edilmemelidir. ExposeRTTI varsayılan olarak yıkıcıları eşleyecektir, bu yüzden eoNoFreeOnCleanup belirterek bunu kısıtlamak isteyebilirsiniz.

düzenleme: Son eklenen bir yaklaşım, temel olarak RTTI aracılığıyla erişilebilen herhangi bir nesnenin açığa çıkmasına ve bağlanmasına izin veren TdwsRttiConnector'ı kullanmaktır. Kurmak için kod açısından çok hafiftir, ancak olumsuz olan herhangi bir derleme zamanı denetimi almazsınız.

+0

Teşekkürler Eric, bu çok yararlı. –