接口如下:public interface IAdmin 
    {
        /// <summary>
        /// 添加新纪录
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        //int InsertNewItem(AdminInfo info);
        int InsertNewItem<T>(T info) ;
     }我想在类admin和User里面实现InsertNewItem方法,参数分别为AdminInfo和UserInfo,怎么做?

解决方案 »

  1.   

    觉得是不是让AdminInfo和UserInfo继承一个接口好点 这里用泛型看着好别扭
      

  2.   

    public interface IAdmin<T> 
    {
        /// <summary>
        /// 添加新纪录
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        //int InsertNewItem(AdminInfo info);
        int InsertNewItem(T info);
    }public class AdminInfo
    {
        //to do
    }public class UserInfo
    {
        //to do
    }public class admin:IAdmin<AdminInfo> 
    {
        public int InsertNewItem(AdminInfo info)
        {
            int i = 0 ;
            //to do
            return i;
        }
    }public class User : IAdmin<UserInfo>
    {
        public int InsertNewItem(UserInfo info)
        {
            int i = 0;
            //to do
            return i;
        }
    }
      

  3.   

    我是这么实现的:public class Admin:IAdmin
    {
         public int InsertNewItem<AdminInfo>(AdminInfo info) {********}
    }
    public class UserInfo:IAdmin
    {
         public int InsertNewItem<UserInfo>(UserInfo info) {********}
    }
    //报错!!
    //显示实现
    public class Admin:IAdmin
    {
         public int IAdmin.InsertNewItem<AdminInfo>(AdminInfo info) {********}
    }
    //也报错
      

  4.   

    public interface IMyInterface{}
        public interface mi
        {
            public bool MyMethod<T>(T t) where T : IMyInterface { }
        }
      

  5.   

    但我希望泛型的参数是个实体类,像adminInfo这样的
      

  6.   

    当然可以,
    只不过你现在是一个方法,
    如果是多方法的话,就不太合理了.
    除非把多个方法,分拆成独立的接口.public interface IAdmin
    {
        /// <summary>
        /// 添加新纪录
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        //int InsertNewItem(AdminInfo info);
        int InsertNewItem<T>(T info);
    }public class AdminInfo
    {
        //to do
    }public class UserInfo
    {
        //to do
    }public class admin : IAdmin
    {
        public int InsertNewItem<AdminInfo>(AdminInfo info)
        {
            int i = 0;
            //to do
            return i;
        }
    }public class User : IAdmin
    {
        public int InsertNewItem<UserInfo>(UserInfo info)
        {
            int i = 0;
            //to do
            return i;
        }
    }
      

  7.   

    显式拉口实现public interface IAdmin
    {
        /// <summary>
        /// 添加新纪录
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        //int InsertNewItem(AdminInfo info);
        int InsertNewItem<T>(T info);
    }public class AdminInfo
    {
        //to do
    }public class UserInfo
    {
        //to do
    }public class admin : IAdmin
    {
        int IAdmin.InsertNewItem<AdminInfo>(AdminInfo info)
        {
            int i = 0;
            //to do
            return i;
        }
    }public class User : IAdmin
    {
        int IAdmin.InsertNewItem<UserInfo>(UserInfo info)
        {
            int i = 0;
            //to do
            return i;
        }
    }
      

  8.   

    我刚开始也是这么写的,但报错,
    InsertNewItem<UserInfo>(UserInfo info)
    根本不能识别UserInfo类型,报错说要我考虑显式实现,但是实现也不行
      

  9.   

    interface IPerson<T> 
        { 
            void PrintName(T t); 
        } 
        class Person 
        { 
            public string Name = ""; 
        } 
        class PersonManager : IPerson<Person> 
        { 
            public void PrintName(Person t) 
            { 
                
            } 
         }
    或用Where<T>
      

  10.   


    我的代码,没有报错.隐式实现要加public
    显式实现去掉public