c# – .Net接口继承编译
发布时间:2020-12-15 17:29:03 所属栏目:百科 来源:网络整理
导读:为什么是这样 : public interface IServiceRechercheT,U where T : IEntite where U : ICritereRecherche{ IListT Rechercher(U critere);}public interface IServiceRechercheUnite : IServiceRechercheIUnite,ICritereRechercheUnite,{} 不同于 : public
为什么是这样 :
public interface IServiceRecherche<T,U> where T : IEntite where U : ICritereRecherche { IList<T> Rechercher(U critere); } public interface IServiceRechercheUnite : IServiceRecherche<IUnite,ICritereRechercheUnite>,{} 不同于 : public interface IServiceRechercheUnite { IList<IUnite> Rechercher(ICritereRechercheUnite critere); } 编译时? 使用第一个接口编译的应用程序无法识别第二个接口.我知道它们在代码中不一样,但最终在执行期间为什么它们不一样? 解决方法
从CLR的角度来看,这些是不同的类型,因为第一个是封闭泛型类型,继承自IServiceRecherche< T,U>.
原因是相同的,如下: public MyClass1 { public int MyProperty { get; set; } } public MyClass2 { public int MyProperty { get; set; } } 它们只是一个不同类型的声明,尽管有类似的成员声明. CLR不能这么想:“啊,MyClass1和MyClass2是相同的.让我们把它们视为同一类型”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |