跨多个服务和 .net 版本重用类型

Reusing types across multiple services and .net versions

我有服务(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.

我的问题是如何定义、修饰 "Identifier",使我无需编写大量代码即可使用 Get(?? Identifier)。

我现在唯一能想到的方法就是创建一个接口IIdentifier,然后添加到部分类

public partial class Service1 : IService {
    byte[] Get(IIdentifier id) {
        return this.Get(new Service1.Identifier() { Id = id.Id, Type = id.Type});
}

但是有很多电话,我不想把它们全部打包。我确定我只是遗漏了一些简单的东西,感谢您提供的任何帮助。

我是从错误的角度来处理这个问题的,而我尝试这样做的方式并不像 Alexei 指出的那样有效。

我设法让一切正常工作,并通过为 .net 3.5 而不是 4.0 编译它来重用 common.dll 中的 类。

.Net 4.0 向后兼容 3.5,因此我能够从我的服务中引用 3.5 common.dll,这允许我的 3.5 代码引用 common.dll 并因此重用类型。