我是一个库生成类对象的客户C,它实现了两个接口IA和IB,它表示我需要存储的永久连接.
我需要存储C调用之间返回的对象.
class Example
{
C _obj;
}
Run Code Online (Sandbox Code Playgroud)
我想模拟C用于测试的接口函数,但因为'C'继承了多个接口我没有接口IC,所以我不能写:
class Example
{
Example(IC cInstance) { _obj = cInstance; }
IC _obj;
}
Run Code Online (Sandbox Code Playgroud)
因此,我不能轻易地创建一个能够实现这两个接口一个模拟对象IA,并IB可以随便使用测试,我的班Example工作.
如何在不使用铸造或丑陋的情况下执行此操作?
你可以使用泛型来做到这一点:
class Example<T> where T : IA, IB
{
public Example(T instance)
{
this.obj = instance;
}
private T obj;
}
Run Code Online (Sandbox Code Playgroud)
只要该类实现两个接口,您就可以使用C或使用您的模型Example:
class CMock : IA, IB
{
// ...
}
var myMockObj = new CMock();
var example = new Example<CMock>(myMockObj);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |