AutoFixture - 如何调用方法,如何设置自动属性的私有设置器?
这是我的课程:
public MyClass {
public int Id { get; private set; }
public SetAssignableId (int id) {
this.Id = id;
}
}
我想让 AutoFixture 通过 SetAssignableId 或私有设置器设置 Id。
Here's my class:
public MyClass {
public int Id { get; private set; }
public SetAssignableId (int id) {
this.Id = id;
}
}
I would like to have AutoFixture set the Id via SetAssignableId or the private setter.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
目前无法使用 AutoFixture 调用私有设置器。尽管它在内部使用反射,但在设计上它尊重类型的公共 API。
如果您仔细阅读工作项目,问题板上有一个未完成的请求,以使其更具可定制性您将看到有一个启用受保护设置器填充的请求。
但是,根据给出的示例,当然可以调用 SetAssignableId 方法。像这样的自定义应该可以解决问题:
There's no way to invoke a private setter with AutoFixture today. Although it uses reflection internally, by design it respects a type's public API.
There's an outstanding request on the Issue Board to make this more customizable - if you read the work item closely you will see that there's a request to enable filling of protected setters.
However, with the example given, it's certainly possible to invoke the SetAssignableId method. A Customization like this should do the trick: