Question

J'ai des problèmes pour créer proxy client WCF pour le code de service comme dans cet exemple:

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

Chaque fois que je tente de créer un proxy WCF en utilisant « Ajouter un service de référence » dans VS échoue et le journal de trace dit

  

« WcfProxyTest.ClassA » type ne peut être ajouté à la liste des types connus depuis un autre type « WcfProxyTest.ClassB » avec le même nom de contrat de données « http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfKeyValueOfstringanyType » est déjà présent. S'il existe différentes collections d'un type particulier - par exemple, Liste et test [], ils ne peuvent pas à la fois être ajoutés en tant que types connus. Pensez à préciser que l'un de ces types d'ajout à la liste des types connus.

Je peux voir ce que le message d'erreur dit, mais est-il une autre façon de contourner cela (autre que refactorisation les classes). Je traite un ancien système qui a cours écrit de la même manière que dans mon exemple et les réécrire n'est pas une option que ce genre de choses se trouve dans le cœur même du système: S

Toutes les idées? Merci!

Était-ce utile?

La solution

J'ai décidé de factoriser le code de telle sorte que je n'ai pas de fournir deux KnownTypes qui me contourne le problème. Environ 300 erreurs de syntaxe plus tard qui a fonctionné. Je serais intéressé par d'autres façons de le faire si ...

Autres conseils

Essayez d'ajouter:

[KnownType(typeof(Dictionary<string, ITest>))]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top