IUserCommon<T> 接口继承于IInsert<T>, IModify<T>, IDelete<string>, ISelect<T>,
IAdmin 继承 IUserCommon<AdminInfo>,
操作类Adimin 继承于IAdmin接口问题是:
我想在Adimin 中实现接口IInsert<T>中的ApplicationState InsertItem(T obj);方法,就是下面贴的ApplicationState IInsert<AdminInfo>.InsertItem(AdminInfo item) 不能加public属性,否则报错,但不加的话肯定无法访问。
怎么回事?是不是我的思路有问题?应该怎么写?Adimin admin = new Adimin ();
之后,public interface IInsert<T>
    {
        ApplicationState InsertItem(T obj);
    }public interface IUserCommon<T> : IInsert<T>, IModify<T>, IDelete<string>, ISelect<T>
    {
        ApplicationState ModifyLoginPassword(string name, string newPassword, string oldPassword);        ApplicationState ModifySafePassword(string name, string newPassword, string oldPassword);        ApplicationState CheckName(string name);        ApplicationState Login(string name, string password);
    }public interface IAdmin : IUserCommon<AdminInfo>
    {
        ApplicationState ResetLoginPassword(string account, string safePwd, string liPwd);
    }
public class Admin : IAdmin
{
ApplicationState IInsert<AdminInfo>.InsertItem(AdminInfo item) 
        {
    
            SqlParameter[] parms = DBSQLHelper.GetCachedParameters(PROC_INSERT);
            
            if (parms == null)
            {
                parms = new SqlParameter[]{
                    new SqlParameter(PARM_ACCOUNT,item.LoginName),
                    new SqlParameter(PARM_NAME,item.TrueName),
                    new SqlParameter(PARM_LOGIN_PASSWORD,item.LoginPassword),
                    new SqlParameter(PARM_SAFE_PASSWORD,item.SafePassword),
                    new SqlParameter(PARM_GRADE_ID,item.UserType),
                    new SqlParameter(PARM_REGISTER_DATE,item.RegisterDate)
                };                DBSQLHelper.CacheParameters(PROC_INSERT, parms);
            }            try
            {
                if (DBSQLHelper.ExecuteNonQuery(CommandType.StoredProcedure, PROC_INSERT, parms) > 0)
                    return ApplicationState.Normal;
                else
                    return ApplicationState.Fail;            }
            catch
            {
                return ApplicationState.Data_Already_Exists;
            }
        }
}

解决方案 »

  1.   

    这个是接口的显式实现,不能加可见修饰符,一定是private的
    如果要调用这个方法,可以转换成接口再调用接口的方法
    ps:lz这里根本需要要用到接口的显式实现,直接用隐式实现好了,也就是传统的public+签名完全相同的方法
      

  2.   

    隐式实现IAdmin 在调用其方法。
      

  3.   

    外边能调啊
    强转成IInsert<AdminInfo>再调用
    要是嫌麻烦就别显示实现接口了
      

  4.   

    百度了一下,明白了,谢谢诸位。
    顺便说一句,好久没登csdn了,这论坛改的,真TM丑!