У меня есть службы (Service1, Service2, ...), которые ссылаются на Common.dll, все они находятся в .Net 4.0 , и у меня возникают проблемы с повторным использованием типов в потребителе сервис.
Common.dll имеет
Identifier {
int Id;
string Type;
}
Каждый Сервис реализует
byte[] Get(Common.Identifier);
string Test();
Потребитель услуги ( .Net3.5 ) генерирует код в reference.cs
class Service1 {
byte[] Get(Service1.Identifier);
string Test();
}
class Service2 {
byte[] Get(Service2.Identifier);
string Test();
}
Я связал их вместе, создав интерфейс
Добавление интерфейса к частичным классам, но может заставить его работать только для вызова Test ()
public interface IService {
//byte[] Get(Service2.Identifier);
string Test();
}
public partial class Service1 : IService;
public partial class Service2 : IService;
Таким образом, я могу использовать услуги взаимозаменяемо.
Я планирую создать еще больше для использования в качестве плагинов для интеграции с различными системами
IService GetService(string provider) {
switch (provider) {
case "Service1":
return (IService)new Service1();
case "Service2":
return (IService)new Service2();
}
}
GetService.Test() //works perfectly.
Моя проблема в том, как мне определить, украсить «Идентификатор» таким образом, чтобы я мог использовать Get (?? Identifier) без написания кода.
Единственный способ, о котором я могу подумать сейчас, - это создать интерфейс IIdentifier, а затем добавить к частичным классам
public partial class Service1 : IService {
byte[] Get(IIdentifier id) {
return this.Get(new Service1.Identifier() { Id = id.Id, Type = id.Type});
}
но звонков много, и мне не нужно их оборачивать. Я уверен, что просто упускаю что-то простое, спасибо за любую помощь, которая может быть предоставлена.