gpt4 book ai didi

c# - 如何将强制转换接口(interface)类型化为具体类型

转载 作者:太空宇宙 更新时间:2023-11-03 21:47:58 25 4
gpt4 key购买 nike

我正在尝试模拟 ManagementObjectSearcher 类并创建了一个 IManagementInfo 接口(interface),那么如何将该接口(interface)转换为 ManagementObjectSearcher 类?

 ManagementObjectSearcher s = new ManagementObjectSearcher();
IManagementInfo info = s as IManagementInfo;

这为我创建了一个空信息对象

ManagementObjectSearcher s = new ManagementObjectSearcher();
IManagementInfo info =IManagementInfo(s);

这给我运行时错误(无法类型转换)

最佳答案

你不能那样做。你想这样做以便你可以编写单元测试吗?如果你试图模拟一个你无法控制的类,那么你必须将它包装在另一个类中。

public class MyManagementObjectSearcherWrapper : IManagementInfo
{
public void TheMethodToMock()
{
var searcher = new ManagementObjectSearcher();
// The code you want to mock goes here
}
}

然后你像这样运行你的代码:

public void YourCode(IManagementInfo info)
{
info.TheMethodToMock();
}

然后 YourCode() 将采用您的包装器或模拟对象。您使用 IManagementInfo 接口(interface)创建模拟。

关于c# - 如何将强制转换接口(interface)类型化为具体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15967387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com