通过接口创建假对象
本文关键字:对象 创建 接口 | 更新日期: 2023-09-27 18:25:10
我需要通过接口动态创建假对象。这个伪对象的每个方法和属性都应该只抛出NotImplementedException。有没有什么简单的方法可以只使用.NET反射API来实现?
您可以使用Moq这样的嘲弄API。它是为模拟单元测试而设计的,但它应该满足您的需要。
也许ImpromptuInterface会有所帮助。
一个示例代码(从其主页复制)是:
using ImpromptuInterface;
using ImpromptuInterface.Dynamic;
public interface IMyInterface{
string Prop1 { get; }
long Prop2 { get; }
Guid Prop3 { get; }
bool Meth1(int x);
}
//Anonymous Class
var anon = new {
Prop1 = "Test",
Prop2 = 42L,
Prop3 = Guid.NewGuid(),
Meth1 = Return<bool>.Arguments<int>(it => it > 5)
}
IMyInterface myInterface = anon.ActLike<IMyInterface>();
学习曲线比使用Moq这样的东西更陡峭,但它可能更适合您的需求,因为Moq是专门用于单元测试的,因此API可能太"嘈杂",无法满足您的需求。
恐怕您唯一的解决方案是使用Reflection.Emit,这并不是很简单:)有关更多信息,请参见C#反射:将类发射到现有程序集或反射发射。