Udostępnij za pośrednictwem


Problemy w wersji dla typów wartości zagnieżdżone w macierzystym typów (C + +/ CLI)

Należy wziąć pod uwagę składnika zestawu podpisane (silnej nazwy), używane do konstruowania zestawu klienta.Składnik zawiera typ wartości, używany w kliencie jako typu dla członka macierzystym Unii, klasy lub tablicy.Jeśli przyszłych wersji składnika, zmienia rozmiar lub układ typu wartości, klient musi ponownie kompilowana.

Tworzenie keyfile z sn.exe (sn -k mykey.snk).

Przykład

Następujące próbki jest składnikiem.

// 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);
   }
};

Próbka ta jest klienta:

// 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();
}

Dane wyjściowe

S.i = 5
S.i = 6
S.i = 10
S.i = 11

tbc13stx.collapse_all(pl-pl,VS.110).gifKomentarze

Jednakże jeśli dodasz innego członka do struct S w nested_value_types.cpp, (na przykład double d;) i ponownie skompilować składnika bez ponownej kompilacji klienta, wynik jest nieobsługiwany wyjątek (typu System.IO.FileLoadException).

Zobacz też

Inne zasoby

Typy zarządzane (C + +/ CLI)