WCF proxy de cliente excepción - “Tipo no se puede añadir a la lista de tipos conocidos”

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

Pregunta

Estoy teniendo problemas para crear proxy de cliente WCF para el código de servicio como en este ejemplo:

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

Siempre que intente crear un proxy WCF utilizando "Agregar referencia de servicio" en VS falla y registro de seguimiento dice

  

Tipo 'WcfProxyTest.ClassA' no se puede añadir a la lista de tipos conocidos desde otro tipo 'WcfProxyTest.ClassB' con el mismo nombre de contrato de datos ' http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfKeyValueOfstringanyType ' ya está presente. Si hay diferentes colecciones de un tipo particular - por ejemplo, List Prueba y [], no pueden ambos ser añadidos como los tipos conocidos. Considere especificar sólo uno de estos tipos para su adición a la lista de tipos conocidos.

Puedo ver lo que el mensaje de error que dice, pero ¿hay alguna otra forma de evitar esto (aparte de refactorización las clases). Estoy tratando con un sistema heredado que tiene clases escritos en la misma manera que en mi ejemplo y volver a escribir ellos no es una opción ya que este material se encuentra en el corazón mismo del sistema: S

Algunas ideas? Gracias!

¿Fue útil?

Solución

decidí refactorizar el código de una manera tal que no tengo para proporcionar dos KnownTypes la que me consigue solucionar el problema. Alrededor de 300 errores de sintaxis más adelante que trabajaron. Yo estaría interesado en cualesquiera otras formas de hacerlo, aunque ...

Otros consejos

Trate de añadir:

[KnownType(typeof(Dictionary<string, ITest>))]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top