Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Considere um componente de assembly assinado (nome forte) usado para criar um assembly de cliente.O componente contém um tipo de valor usado no cliente como o tipo de membro de uma união nativa, uma classe ou uma matriz.Se uma versão futura do componente altera o tamanho ou o layout do tipo de valor, o cliente deve ser recompilado.
Criar um keyfile com sn (sn -k mykey.snk).
Exemplo
O exemplo a seguir é o componente.
// 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);
}
};
Esse exemplo é o cliente:
// 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();
}
Saída
S.i = 5
S.i = 6
S.i = 10
S.i = 11
Comentários
No entanto, se você adicionar outro membro para struct S em nested_value_types.cpp, (por exemplo, double d;) e recompilar o componente sem recompilar o cliente, o resultado é uma exceção não tratada (do tipo System.IO.FileLoadException).