WCF proxy de cliente excepción - “Tipo no se puede añadir a la lista de tipos conocidos”
-
30-09-2019 - |
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!
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>))]