4 Stimmen

Seltsame SerializationException für Enum in AppDomain

Ich erhalte eine SerializationException für ein enum beim Aufruf von einer AppDomain in eine andere:

System.Runtime.Serialization.SerializationException: Typ ist nicht aufgelöst für Member 'Dummy.MyEnum,Dummy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

Beispiel-Code:

public enum MyEnum
{    
  A = 0,    
  B = 1,    
  C = 2,
}

public class FooBar : MarshalByRefObject
{
  public void Test1(MyEnum dummy)
  {
  }

  public void Test2(object dummy)
  {
  }
}

Bei diesem Aufruf wird die Ausnahme ausgelöst:

 getFooBarInOtherAppDomain().Test1(MyEnum.A);

Bei Verwendung eines anderen serialisierbaren Typs gelingt dies:

 getFooBarInOtherAppDomain().Test2(0);

Caller, Callee und Enum sind in derselben Assembly definiert.

Was meint .Net mit "Type is not resolved" und warum wird die Ausnahme ausgelöst? Sind Enums nicht standardmäßig serialisierbar?

1voto

Hans Passant Punkte 894572

Jede AppDomain hat ihren eigenen Suchpfad für Assemblies, der mit der Klasse AppDomainSetup konfiguriert wird. Die app.config-Datei für die primäre AppDomain. Es sieht so aus, als ob in Ihrem Fall eine Assembly gefunden wird, die geladen werden soll, aber eine andere als die, die zur Serialisierung der Daten verwendet wurde. In der gefundenen Baugruppe fehlt der Enum-Typ. Untersuchen Sie dies mit Fuslogvw.exe, damit Sie sehen können, welche Assemblies aufgelöst werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X