Добавление ссылки на службу WCF с дополнительными разрывами DLL - PullRequest
0 голосов
/ 01 октября 2010

У меня есть следующие классы, определенные во внешней сборке от стороннего поставщика:

namespace ThirdParty.Vendor.Code
{
  [Serializable]
  [XmlInclude(typeof(Test1Data))]
  [XmlRoot(Namespace = "", IsNullable = false)]
  public abstract class DeviceTestData
  {
    protected DeviceTestData();
  }

  [Serializable]
  [XmlRoot(Namespace = "", IsNullable = false)]
  public class TestData : DeviceTestData
  {
    public TestData();

    public double DoubleValue { get; set; }
    [XmlIgnore]
    public bool DoubleValueSpecified { get; set; }
  }
}

Я добавил эту сборку в качестве ссылки на мою службу WCF под названием «TestService», чтобы я мог написать код службы, который использует эти типы. Это все работает отлично.

Теперь у меня есть второй проект, к которому мне нужно добавить ссылку на TestService. Добавление ссылки работает нормально, но когда я пишу код для использования ссылочных типов и пытаюсь скомпилировать, я получаю следующую ошибку:

The type or namespace name 'TestData' could not be found (are you missing a using directive or an assembly reference?)

Итак, я добавил DLL поставщика в качестве ссылки во второй проект и директиву для использования пространства имен ThirdParty.Vendor.Code, но теперь я получаю:

Cannot implicitly convert type 'ThirdParty.Vendor.Code.TestData' to 'ServiceReference.DeviceTestData'

Кажется, что без ссылки на стороннюю DLL необходимые классы не генерируются, но если я добавлю ссылку, на них как-то будут ссылаться дважды. WTF?

Кто-нибудь получил какие-либо предложения о том, как исправить / обойти это?

1 Ответ

1 голос
/ 01 октября 2010

Когда вы генерируете сервисную ссылку, убедитесь, что у вас уже есть сборка, содержащая контракт данных, и выберите «Повторное использование типов в ссылочных сборках».

...