如何从实例动态创建类型并修改某些或访问受保护的字段
本文关键字:访问 受保护 字段 修改 实例 动态 类型 创建 | 更新日期: 2023-09-27 18:33:01
我需要在我的域实体上模拟和测试一些行为。域实体将 Id 作为受保护字段。我的域实体上的某些行为使用该 ID 来确定该实体是新的还是脏的实体。那么我如何动态创建一个从域实体继承的类,以便我有权访问受保护的字段。类似于实体框架创建的代理。或者,如果有任何其他更好的方法来模拟并仍然测试域类上的函数。请参阅下面的示例代码:
public class Customer{
public Id {get; protected set;}
public bool SomeMethod(){
//This method check if the Id == 0 then it's a new instance and if not then
//Old instance
}
}
public void Test_SomeMethod(){
var customer = Customer.GetInstance();
//Test the Somemethod. By mocking that it's not a new instance
}
您可以随时使用Castle DynamicProxy项目来创建运行时代理:
- http://docs.castleproject.org/Default.aspx?Page=DynamicProxy&NS=Tools&AspxAutoDetectCookieSupport=1
好吧,事实上,从他们的维基上检查这个声明:
Moq和Rhino Mocks都使用它来提供他们的嘲笑 能力。
你为什么不看看这些模拟框架(Moq和Rhino Mocks)?