WCF proxy client eccezione - “Tipo non può essere aggiunto alla lista dei tipi conosciuti”

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

Domanda

Ci sono problemi che creano proxy client WCF per il codice servizio come in questo esempio:

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

Ogni volta che provo a creare un proxy WCF utilizzando "Aggiungi riferimento al servizio" in VS fallisce e registro di traccia dice

  

Tipo 'WcfProxyTest.ClassA' non può essere aggiunto alla lista dei tipi conosciuti dal un altro tipo 'WcfProxyTest.ClassB' con lo stesso nome del contratto di dati ' http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfKeyValueOfstringanyType ' è già presente. Se ci sono diverse raccolte di un tipo particolare - ad esempio, List e Test [], non possono essere entrambi aggiunti come tipi noti. Considerare specificando solo uno di questi tipi per l'aggiunta alla lista di tipi conosciuti.

posso vedere ciò che il messaggio di errore che dice, ma c'è qualche altro modo per aggirare questo (diverso da refactoring le classi). Mi occupo di un sistema legacy che ha classi scritte nello stesso modo come nel mio esempio e loro riscrittura non è un'opzione come questa roba si trova proprio nel cuore del sistema: S

Tutte le idee? Grazie!

È stato utile?

Soluzione

Ho deciso di refactoring del codice in modo tale che io non devo fornire due KnownTypes che mi aggira il problema. Circa 300 errori di sintassi più tardi che hanno lavorato. Sarei interessato in altri modi di farlo anche se ...

Altri suggerimenti

Prova ad aggiungere:

[KnownType(typeof(Dictionary<string, ITest>))]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top