请问下面代码为什么通不过编译呢?
    public interface interA
    { }    public interface interB
    {
        string MethodA(interA str);
    }    public class classA : interA 
    { }    public class classB : interB
    {
        public string MethodA(classA str)
        {
            return "";
        }
    }
错误提示:错误 1 “WebApplication2.classB”不实现接口成员“WebApplication2.interB.MethodA(WebApplication2.interA)” E:\WebApplication2\WebApplication2\Default.aspx.cs 37 18 WebApplication2

解决方案 »

  1.   

        public class classB : interB
        {
            public string MethodA(interA str)
            {
                return "";
            }
        }实例化接口方法的时候不支持协变,但在调用方法的时候,可以传入classA的实例
      

  2.   

        public interface interA
        { }    public interface interB<T> where T : interA
        {
            string MethodA(T str);
        }    public class classA : interA 
        { }    public class classB : interB<classA>
        {
            public string MethodA(classA str)
            {
                return "";
            }
        }
      

  3.   

    我个人认为这样string MethodA(interA str);相当于将MethodA方法在接口interB里面实现了
      

  4.   

     MethodA(classA str) 改成 MethodA(interA str)