我有三个文件
1.接口
public interface IA{ }
2.实现接口的类
public class A: IA
{
private IA _ia;
public A(IA ia)
{
_ia= ia;
}
.....其他实现
}
3.实例化A类的类
public class B
{}
我想问我怎么在B类中实例化A并且调出A中的方法.
因为构造函数中的参数是接口吗..所以不知道要怎样实例化A类..麻烦高手教教我吧..
1.接口
public interface IA{ }
2.实现接口的类
public class A: IA
{
private IA _ia;
public A(IA ia)
{
_ia= ia;
}
.....其他实现
}
3.实例化A类的类
public class B
{}
我想问我怎么在B类中实例化A并且调出A中的方法.
因为构造函数中的参数是接口吗..所以不知道要怎样实例化A类..麻烦高手教教我吧..
1、你对IA的实现类,最好加上不带参数的构造函数。
2、不要用接口做参数,因为接口没有提供实际方法,也就是接口类型的参数没有实例化,是无法使用的。
整个程序如下:
public interface IA{ }
public class A: IA
{
public A()
{
}
}
public class B
{
IA _ia=new A();
}
public UerEntity GetUser(string id)
{
return _ia.Get(id);
}
public UerEntity GetUserByUserName(string userName)
{
return _ia.Get(userName);
}所以我的构造还是要用接口传递进去参数的.不然更无法实例化我的_ia
private IA _ia;
public A(IA ia)
{
_ia= ia;
}
好了
如果你要用到IA对象里的方法
只要private IA _ia; 改为public
我的意思是你A本身不要实现IA接口
IA B = new B();
A a = new A(B);
这样用,感觉比较舒服
public interface IA{ }
2.实现接口的类
public class A: IB,IC
{
private IA _ia;
public A(IA ia)
{
_ia= ia;
}
.....其他实现
}
3.实例化A类的类
public class B
{}
public class A:IA
{
private IA _ia;
public A(IA ia)
{
_ia = ia;
}
public A()
{
}
} public interface IA
{
} public class B
{
public void Test()
{
IA ia = new A();
A a = new A(ia);
}
}这样行吗?
private IA _ia;
public static IA Ia
{
set;
get;
}
public 我感觉这麽用才舒服
这样应该可以编译,不过大概没有什么实际意义。看上去你的这个IA接口像是个工厂模式里的产品类的接口,仔细看下文档,看看如何正确才能正确使用
所以从新把3个类贴上来一下..
1.接口
public interface IA{ }
2.实现接口的类
public class A: IB,IC
{
private IA _ia;
public A(IA ia)
{
_ia= ia;
}
.....其他实现
}
3.实例化A类的类
public class B
{}
{
void dosomething();
}public class A:IA
{
public void dosomething()
{
}
}public class B
{
IA a=new A();
a.dosomething();
}是要问这个意思吗?
public class B
{
IA ia = new B()//B实现了IA接口
A a = new A(ia);
}
这种实现不行吗?