【发布时间】:2019-02-28 04:22:09
【问题描述】:
为 3rd 方库创建包装类的正确方法是什么:
我已经像这样创建了一个包装器:
public class UserContextWrapper
{
// 3rd party lib
private UserContext _userContext;
public string City {
get { return _userContext.City; }
}
public Organization Organization {
get { return _userContext.Organization; }
}
// Create properties that wrap UserContext 3rd party lib properties
}
- 这是创建包装器的正确方法吗?
- 我需要使用(第 3 方库)组织属性,我无法模拟,因为它在其构造函数中使用了会话:
public class Organization() { // 填写会话信息 };
- 我将如何处理这些类型的属性?
- 我是否也必须为组织创建包装器? (OrganizationWrapper => 然后在 UserContextWrapper 中使用该包装器?)
【问题讨论】:
-
您实际上是通过会话还是只是从会话中获取值?你能显示 actual
Organization构造函数而不是注释掉参数吗? -
为什么需要扭曲它?除了您指示的传递槽参数之外,您还添加了哪些功能?
-
使用会话中的值,而不是会话本身
-
所以对会话没有直接依赖,那么模拟它有什么问题呢?我认为您没有足够的细节来给出有效的答案。也许展示一些不起作用的东西,以便我们了解如何解决它?
-
好吧,当执行第 3 方 lib UserContext() ctor 时,它会填充其属性,其中之一是组织。此外,模拟框架 MOQ 会在 Organization 上引发错误,因为它无法创建新的 Organization(),因为它的构造函数从会话中读取