public interface IItem
{
  SqlDataReader GetItems();
}
public class Item:IItem
{
   public SqlDataReader GetItems()
  {  
      //具体实现代码,省略....
  return sdr;
  }
}
在页面调用的时候发现
   IItem iitem=new IItem();
   SqlDataReader sdr=iitem.GetItems();
 疑问:就实例化了接口的对象,怎么能执行类Item里面的方法呢?不应该是 Item it=new Item();
   SqlDataReader sdr=it.GetItems();来获得结果吗?
  

解决方案 »

  1.   

     IItem iitem=new IItem(); 
       SqlDataReader sdr=iitem.GetItems(); 没有报无法实例化接口的错误么?这样也可以? 汗一下
      

  2.   

    IItem iitem=new Item();  
      

  3.   

    接口是不能直接被实例化的。PetShop4里面是这样用接口的:
    DALFactory:
    ublic static PetShop.IDAL.ICategory CreateCategory() {
                string className = path + ".Category";
                return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className);
            }BLL:
    private static readonly ICategory dal = PetShop.DALFactory.DataAccess.CreateCategory();
      

  4.   

    可以这样
    EditBox editbox = new EditBox( );
    editbox.Paint( );
    IControl control = editbox;
    control.Paint( );EditBox是一个类,他继承了IControl接口
      

  5.   

    嗯.问题已经解决.正如 cheng_feng001兄弟说的这个例子一样EditBox editbox = new EditBox( ); 
    editbox.Paint( ); 
    IControl control = editbox; 
    control.Paint( ); EditBox是一个类,他继承了IControl接口
     
    这样就可以了.谢谢