不同域/项目中的相同接口

use*_*149 3 .net c# design-patterns interface

我遇到了这个问题:

实现IP产品接口的SQLBackend中的产品类.

我还在SAPBackend(ERP,会计软件)中获得了一个实现相同IP产品的产品.

两个后端都处于不同的项目中.

我希望能够在这两个项目之间使用传递产品,所以我需要相同的通用接口.

我在考虑将IProduct放在一个通用的接口项目中,但如果有许多常见的情况会导致该项目中有很多接口.如果只是导致我将这些接口暴露给很多项目

我想知道是否有一个更好的案例,所以SAPBackend和SQLBackend支持他们自己并仍然共享一个共同的界面?

namespace Interfaces
{
    public interface IProduct
    {
        string name {set; get;}
    }

}
namespace Sqlbackend
{
    public class Product : IProduct
    {
        public string name { set; get; }
     }
}
namespace ERPbackend
{
    public class Product : IProduct
    {
        public string name { set; get; }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 6

.NET中的类型由其程序集确定范围.除非接口在同一个程序集中,否则它不是同一类型,因此不会被视为(转换将失败等).

所以你需要在这里的项目之间进行参考; 最常见的是,第三个dll中只有常见的类型和接口.

例外情况是,如果您在两个层之间进行基于合同的SOA(例如通过WCF).但我不认为这是你的意图.