.net 我可以使现有(固定)类实现新接口吗?

.net 我可以使现有(固定)类实现新接口吗?,.net,interface,implementation,.net,Interface,Implementation,我有一种感觉,我已经知道人们将给出的答案,但不管怎样: 假设我正在编写一个新类,我们将其称为PooledQueue,在该类的构造函数中,我希望接受一个实现接口IResourcePool的参数。这里的想法是,我可以使用任何底层池对象,只要它提供了IResourcePool的属性/方法(你知道,接口背后的整个想法,对吧?) 但是,如果已经有一个类提供了IResourcePool的所有功能,除了它没有实现IResourcePool(并且我不能修改源代码),那么我有没有办法强制实现 我希望人们回答的是,

我有一种感觉,我已经知道人们将给出的答案,但不管怎样:

假设我正在编写一个新类,我们将其称为
PooledQueue
,在该类的构造函数中,我希望接受一个实现接口
IResourcePool
的参数。这里的想法是,我可以使用任何底层池对象,只要它提供了
IResourcePool
的属性/方法(你知道,接口背后的整个想法,对吧?)

但是,如果已经有一个类提供了
IResourcePool
的所有功能,除了它没有实现
IResourcePool
(并且我不能修改源代码),那么我有没有办法强制实现

我希望人们回答的是,我应该为实现必要接口的现有类创建一个包装器。但我更希望能够做到这一点:

// GetDataPool returns an object of type Pool<Data> that I can't modify
var q = new PooledQueue<Data>(GetDataPool());
//GetDataPool返回一个类型为Pool的对象,我无法修改该对象
var q=新的PooledQueue(GetDataPool());
与此相反:

var q = new PooledQueue<Data>(new PoolWrapper<Data>(GetDataPool()));
var q=newpooledqueue(newpoolwrapper(GetDataPool());

我想我觉得真正有用的是,如果一个类的接口实现可以与类定义分开定义。一种设计良好的数据库的构造方式——关联表将实体和其他表的ID链接起来。这有意义吗?

开箱即用,如果不从类继承接口,就不能在类上强制接口

有一些方法,例如使用透明库或第三方库,例如,允许您模拟这样的内容,但成本比创建包装类要高


事实上,您可以创建一个重载构造函数来为您创建包装器,这样代码就可以保持干净…

+1-特别是像具有重载构造函数的部分一样。