我有一个名为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
库。
答案 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。
看一下这篇文章;