WCF-Client-Proxy-Ausnahme - „Typ kann nicht zur Liste der bekannten Typen hinzugefügt werden“

StackOverflow https://stackoverflow.com/questions/3546813

Frage

Ich habe Probleme zu schaffen WCF-Client-Proxy für Service-Code wie in diesem Beispiel:

// data classes
[KnownType(typeof(ClassA))]
[KnownType(typeof(ClassB))]
public abstract class BaseClass : Dictionary<string, ITest>
{
}

public class ClassA : BaseClass
{
}

public class ClassB : BaseClass
{
}


public interface ITest
{
}

// service
[ServiceContract]
public interface IService1
{
    [OperationContract]
    BaseClass Method();
}

public class Service1 : IService1
{
    public BaseClass Method()
    {
        ...
    }
}

Jedes Mal, wenn ich versuche, einen WCF-Proxy erstellen mit "Add Service Reference" in VS es fehlschlägt und Trace-Protokoll sagt

  

Typ ‚WcfProxyTest.ClassA‘ kann nicht mit dem gleichen Datenvertragsnamen ‚ http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfKeyValueOfstringanyType ‘ ist bereits vorhanden. Wenn es verschiedene Sammlungen eines bestimmten Typs - zum Beispiel, List und Test [], können sie nicht beide als bekannte Typen hinzugefügt werden. Betrachten wir nur einen dieser Typen für die Zugabe zu den bekannten Typen Liste angeben.

kann ich sehen, was die Fehlermeldung sagt, aber gibt es eine andere Möglichkeit, um diesen (andere als die Klassen Refactoring). Ich bin mit einem Legacy-System zu tun, die auf die gleiche Weise geschrieben Klassen haben, wie in meinem Beispiel und sie Umschreiben ist keine Option, da dieses Material in dem Kern des Systems sitzt: S

Irgendwelche Ideen? Dank!

War es hilfreich?

Lösung

Ich beschloss, den Code so Refactoring, dass ich müssen nicht zwei KnownTypes schaffen, die mich um das Problem bekommt. Über 300 Syntaxfehler später arbeitete. Ich würde in jeder anderen Weise zu tun, interessiert sie aber ...

Andere Tipps

Versuchen Sie:

[KnownType(typeof(Dictionary<string, ITest>))]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top