У меня есть следующие классы, определенные во внешней сборке от стороннего поставщика:
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?
Кто-нибудь получил какие-либо предложения о том, как исправить / обойти это?