标签:generics idisposable c net
为什么在遵循以下代码的情况下行为发生变化
public class Repository<T> : IRepository<T> where T : BaseEntity, IDisposable
和
public class Repository<T> : IDisposable, IRepository<T> where T : BaseEntity
如果我将实现类留空,则在上述情况下,我不希望我实现Dispose()方法.但是,在下面需要实现Dispose()方法.
下面是完整的测试代码,如下所示:
public interface Itest<T> where T: testA{ }
public class testA { }
public class test2<T> : Itest<T> where T : testA,IDisposable{ } //successfully compiled
public class test3<T> : IDisposable, Itest<T> where T : testA { }//Failed compiled : need to implement Dispose()
解决方法:
当你有
public class Repository<T> : IRepository<T> where T : BaseEntity, IDisposable
然后,T必须实现IDisposable.
当你有
public class Repository<T> : IDisposable, IRepository<T> where T : BaseEntity
然后,存储库必须实现IDisposable.
当您想要创建test2< T>的实例时,您应该提供一个从testA派生并实现IDisposable的通用参数.
标签:generics,idisposable,c,net 来源: https://codeday.me/bug/20191026/1933430.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。