Değer türleri için sürüm sorunlarını yerel türleri içinde iç içe (C++/ CLI)
İstemci derlemesi oluşturmak için kullanılan işaretli (tanımlayıcı adlı) derleme bileşeni düşünün.Bu bileşen istemcide yerel bileşim, sınıf ya da dizi üyesi için tür olarak kullanılan bir değer türü tutar. Bileşenin sonraki sürümleri değer türünün boyutunu veya düzenini değiştirirse, istemci yeniden derlenmelidir.
sn.exe (sn -k mykey.snk) ile anahtar dosya oluşturun.
Örnek
Örnek bir bileşen aşağıda verilmektedir:
// nested_value_types.cpp
// compile with: /clr /LD
using namespace System::Reflection;
[assembly:AssemblyVersion("1.0.0.*"),
assembly:AssemblyKeyFile("mykey.snk")];
public value struct S {
int i;
void Test() {
System::Console::WriteLine("S.i = {0}", i);
}
};
Bir istemci örneği:
// nested_value_types_2.cpp
// compile with: /clr
#using <nested_value_types.dll>
struct S2 {
S MyS1, MyS2;
};
int main() {
S2 MyS2a, MyS2b;
MyS2a.MyS1.i = 5;
MyS2a.MyS2.i = 6;
MyS2b.MyS1.i = 10;
MyS2b.MyS2.i = 11;
MyS2a.MyS1.Test();
MyS2a.MyS2.Test();
MyS2b.MyS1.Test();
MyS2b.MyS2.Test();
}
Çıktı
S.i = 5
S.i = 6
S.i = 10
S.i = 11
Comments
Ancak, nested_value_types.cpp'de struct S'e başka bir üye (örneğin, double d;) ekleyip, istemciyi tekrar derlemeden bileşeni tekrar derlerseniz, sonuç işlenmeyen özel durum (System.IO.FileLoadException türünde) olacaktır.