其他分享
首页 > 其他分享> > 从Idisposable实现泛型类时,编译时的行为不同?

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

作者:互联网

为什么在遵循以下代码的情况下行为发生变化

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