Исключение клиента WCF - «Тип не может быть добавлен в список известных типов»

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

Вопрос

У меня проблемы с созданием клиентского прокси 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, используя «Добавить ссылку на сервис» в против, он не удается, а журнал Trace говорит

Тип «WCFProxytest.Classa» не может быть добавлен в список известных типов, поскольку другой тип «WCFPROXYTEST.CLASSB» с тем же именем контракта данных «http://schemas.microsoft.com/2003/10/serialization/arrays:Arrayofkeyvalueofstringytype.'уже присутствует. Если есть разные коллекции определенного типа - например, списокu003CTest> и тест [], они не могут быть добавлены как известные типы. Рассмотрим указание только одного из этих типов для дополнения к известному списку типов.

Я вижу, что говорит сообщение об ошибке, но есть в другой форме (кроме рефакторинга классов). Я имею дело с устаревшей системой, которая имеет занятия, написанные таким же образом, как в моем примере, и переписывая их, не является вариантом, поскольку этот материал сидит в самом ядре системы: S

Есть идеи? Спасибо!

Это было полезно?

Решение

Я решил реформировать код таким образом, чтобы мне не приходилось предоставлять два известных пьеса, которые окажутся вокруг проблемы. Около 300 синтаксических ошибок позже, что работало. Я был бы заинтересован в любых других способах сделать это, хотя ...

Другие советы

Попробуйте добавить:

[KnownType(typeof(Dictionary<string, ITest>))]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top