我有三个文件
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的实例,或者别的类继承于IA,那么将是一个死结。
      

  2.   

    修正一下:
    1、你对IA的实现类,最好加上不带参数的构造函数。
    2、不要用接口做参数,因为接口没有提供实际方法,也就是接口类型的参数没有实例化,是无法使用的。
    整个程序如下:
     
    public interface IA{ }
     public class A: IA
      {
        public A()
        {
        }
        }
     public class B
    {
     IA _ia=new A();
    }
      

  3.   

    纠结的关键是你A实现了IA接口,不可以用别的类去实现。然后A只负责生成个IA的实体出来?
      

  4.   

    A里面的实现: 
    public UerEntity GetUser(string id)
            {
                return _ia.Get(id);
            }
            public UerEntity GetUserByUserName(string userName)
            {
                return _ia.Get(userName);
            }所以我的构造还是要用接口传递进去参数的.不然更无法实例化我的_ia
      

  5.   

    这个和实现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);
    这样用,感觉比较舒服
      

  6.   

    1.接口
     public interface IA{ }
    2.实现接口的类
      public class A: IB,IC
      {
      private IA _ia;
      public A(IA ia)
      {
      _ia= ia;
      }
    .....其他实现
      }
    3.实例化A类的类
      public class B
    {}
      

  7.   


        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);
            }
        }这样行吗?
      

  8.   

    但是我不明白为什么要这麽做呢? A既然继承自IA 那么实现它提供的方法就可以了啊?
      

  9.   


            private IA _ia;
            public static IA Ia
            {
                set;
                get;
            }
    public 我感觉这麽用才舒服
      

  10.   

    A a = new A(null);
    这样应该可以编译,不过大概没有什么实际意义。看上去你的这个IA接口像是个工厂模式里的产品类的接口,仔细看下文档,看看如何正确才能正确使用
      

  11.   

    昨天一直在处理IA的问题.忽略了A是继承自IB和IC而不是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
    {}
      

  12.   

    public interface IA
    {
       void dosomething();
    }public class A:IA
    {
      public void dosomething()
      {
      }
    }public class B
    {
       IA a=new A();
       a.dosomething();
    }是要问这个意思吗?
      

  13.   

    这样的话
     public class B
    {
        IA ia = new B()//B实现了IA接口
        A a = new A(ia);
    }
    这种实现不行吗?