У меня проблемы с созданием клиентского прокси WCF для кода службы, как в этом примере:
// 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()
{
...
}
}
Всякий раз, когда я пытаюсь создать прокси WCF с помощью «Добавить ссылку на службу» в VS, происходит сбой, и журнал трассировки говорит
Тип 'WcfProxyTest.ClassA' не может быть добавлен в список известных типов, поскольку другой тип 'WcfProxyTest.ClassB' с таким же именем контракта данных 'http://schemas.microsoft.com/2003/10/Serialization/Arrays:ArrayOfKeyValueOfstringanyType' уже существует.Если есть разные коллекции определенного типа - например, List и Test [], они не могут быть оба добавлены как известные типы.Попробуйте добавить только один из этих типов для добавления в список известных типов.
Я могу видеть, что говорит сообщение об ошибке, но есть ли другой способ обойти это (кроме рефакторинга классов).Я имею дело с унаследованной системой, в которой классы написаны так же, как в моем примере, и переписать их нельзя, так как этот материал находится в самом ядре системы: S
Есть идеи?Спасибо!