如何将接口与来自不同解决方案的类相关联

时间:2014-02-25 11:37:42

标签: c# class interface

我有一个名为iChannels的界面,它只有一种方法。

using CHNL;
namespace iInterface
{
    public interface iChannels
    {
        string getData(string docXML);
    }
}

然后在另一个项目中我有一个名为Channel1的类,其定义如下:

using iInterface;
namespace CHNL
{
   public class Channel1:iChannels
   {
       string getData(string str)
       {
           return str;
       }
   }
}

我必须进行交叉引用,因为接口和类彼此了解。 之后我有一个webform,我只想使用using iInterface;,但如果我只这样做,我就无法创建Channel1对象。

我的目的是创建Channel1对象,只需使用iInterface库。

2 个答案:

答案 0 :(得分:0)

你不能从iInterface继承,因为iInterface是命名空间的名称而不是接口,所以我认为你需要以下代码;

using iInterface;
namespace CHNL
{
   public class Channel1 : iChannels
   {
       string getData(string str)
       {
           return str;
       }
   }
}

您的webform不需要了解Channel1类,但您的webform所在的项目需要引用Channel1所在的项目。

您可以使用类似

之类的内容创建iChannel的实例
 iChannels myIChannels = new Channel1();

然后,您的网络表单可以在不了解iChannel的实际具体实现的情况下引用iChannel,在本例中为Channel1。

更好的做法是使用工厂或依赖注入来创建iChannel的实际实现并避免使用'new Channel1();'共

答案 1 :(得分:0)

我想我现在可以看到你的问题了。

当你说'我的意图是创建Channel1对象时,只使用iInterface库' ...这在C#中是不可能的,或者至少不可能直接创建Channel1对象而没有声明Channel1与iChannels相同的库。

您可以通过依赖注入实现此目的。一般来说,你的webform将依赖于iChannels,依赖容器将提供iChannels的实现,在你的情况下是Channel1。

看一下这篇文章;

Why does one use dependency injection?