这个问题很简单。我已经开发了一个IDocumentClient (它是DocumentDB .NET客户机)。我是Moq‘’ing ExecuteStoredProcedureAsync()方法。它返回一个StoredProcedureResponse类型(一个具体的类型),但是它的接口非常锁定。
我想我可以创建一个StoredProcedureResponse并将我的有效负载嵌入到Response属性中,但是它的setter是私有的。此外,唯一的构造函数是无参数的。
我在这里错过了什么?如果方法返回一个接口类型(IStoredProcedureResponse)是理想的,但我无法控制它。我意识到我可以为IDocumentClient编写一个包装器,但这是不可行的。
我唯一能想到的就是用"new“关键字扩展和强制覆盖属性--但是,在实际的调用代码中,我会遇到一个可怕的问题,我会检查运行时类型和向下转换,以便使用重写资源属性。
发布于 2017-01-20 22:59:57
使用反射创建它:
Type type=typeof(StoredProcedureResponse);
var spr = (StoredProcedureResponse)Activator.CreateInstance(type,true);并设置属性和其他需要使用反射的内容:
spr.GetType().InvokeMember("PropertyName",
BindingFlags.Instance | BindingFlags.Public | BindingFlags.SetProperty,
Type.DefaultBinder, obj, "MyName");https://stackoverflow.com/questions/41773312
复制相似问题