ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从Idisposable实现泛型类时,编译时的行为不同?

2019-10-26 03:07:42  阅读:197  来源: 互联网

标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有