Özel Bağlayıcı Yapılandırması
Varsayılan seçenek kümesi yeterli değilse, bağlayıcıdan ne istediğinizi açıklayan bir XML dosyasıyla bağlama işlemini yönlendirebilirsiniz.
Türün, yöntemlerin ve/veya alanların uygulamanızdan kaldırılmadığından emin olmak için bağlayıcıya ek tanımlar sağlayabilirsiniz. Kendi kodunuzda tercih edilen yol, iOS'ta Bağlama ve Android'de Bağlama kılavuzlarında açıklandığı gibi özel özniteliği kullanmaktır[Preserve]
.
Ancak SDK'dan veya ürün derlemelerinden bazı tanımlara ihtiyacınız varsa, XML dosyası kullanmak en iyi çözümünüz olabilir (bağlayıcının ihtiyacınız olanları ortadan kaldırmamasını sağlayacak kod eklemek yerine).
Bunu yapmak için, sırasıyla yöntem ve alan düğümlerini içeren tür düğümleri içeren derleme düğümlerini içeren en üst düzey öğeye <linker>
sahip bir XML dosyası tanımlarsınız.
Bu bağlayıcı açıklama dosyasını aldıktan sonra projenize ekleyin ve:
- Android için: Derleme Eylemini LinkDescription olarak ayarlayın
- iOS için: Derleme Eylemini LinkDescription olarak ayarlayın
Aşağıdaki örnekte XML dosyasının nasıl göründüğü gösterilmektedir:
<linker>
<assembly fullname="mscorlib">
<type fullname="System.Environment">
<field name="mono_corlib_version" />
<method name="get_StackTrace" />
</type>
</assembly>
<assembly fullname="My.Own.Assembly">
<type fullname="Foo" preserve="fields">
<method name=".ctor" />
</type>
<type fullname="Bar">
<method signature="System.Void .ctor(System.String)" />
<field signature="System.String _blah" />
</type>
<namespace fullname="My.Own.Namespace" />
<type fullname="My.Other*" />
</assembly>
</linker>
Yukarıdaki örnekte, bağlayıcı (Android için Mono ile birlikte gönderilir) ve (kullanıcı kodu) derlemelerindeki mscorlib.dll
yönergeleri okur ve My.Own.Assembly
uygular.
için mscorlib.dll
ilk bölüm, türün System.Environment
adlı mono_corlib_version
alanını ve yöntemini korumasını get_StackTrace
sağlar.
Bağlayıcı IL üzerinde çalıştığından ve C# özelliklerini anlamadığından, alıcı ve/veya ayarlayıcı yöntemi adlarının kullanılması gerektiğini unutmayın.
için My.Own.Assembly.dll
ikinci bölüm, türün Foo
tüm alanlarını (öznitelik preserve="fields"
gibi) ve tüm oluşturucularını (IL'de adlı .ctor
tüm yöntemler) koruyacağından emin olur. Tür, Bar
bir oluşturucu (tek bir dize parametresi kabul eden) ve belirli bir dize alanı _blah
için belirli imzaları (adları değil) korur.
Ad My.Own.Namespace
alanı içerdiği tüm türleri korur.
Son olarak, tam adı (ad alanı dahil) "My.Other*" joker karakter deseni ile eşleşen her tür, tüm alanlarını ve yöntemlerini korur. Joker karakter *
bir "tür tam adı" deseninde birden çok kez eklenebilir.