MyCompany.Services.MyProduct
(实际命名空间更长)。作为产品的一部分,我还提供了一个示例C#.NET网站。这个Web应用程序使用命名空间
MyCompany.MyProduct
。在最初的开发过程中,服务被添加为项目引用并直接使用。我使用了一个工厂模式,返回实现
MyCompany.Services.MyProduct.IMyService
的对象实例。到目前为止,一切都很好。现在我想改成使用实际的服务引用。在添加引用并在命名空间文本框中键入
MyCompany.Services.MyProduct
后,它在命名空间中生成类MyCompany.MyProduct.MyCompany.Services.MyProduct。不好!我不想因为使用代理类而不得不更改几个地方的using
指令。所以我尝试在命名空间前加上global::
,但是不被接受。请注意,我甚至没有删除原始程序集引用,而且“重用类型”已启用,但显然没有重用。但是,无论如何,我都不想在我的示例网站中保留程序集引用才能使其正常工作。
到目前为止,我想到的唯一解决方案是将我的 Web 应用程序的默认命名空间设置为
MyCompany
(因为它不能为空),并将服务引用添加为 Services.MyProduct
。假设客户想要使用我的示例网站作为起点,并将默认命名空间更改为 OtherCompany.Whatever
,这显然会破坏我的解决方法。这个问题有好的解决方案吗?
总结一下:我想在原始命名空间中生成服务引用代理,而不引用程序集。注意:我看过这个问题,但没有提供适用于我的用例的解决方案。
编辑:正如John Saunders所建议的那样,我已经向Microsoft提交了一些关于此事的反馈:
在Microsoft Connect上的反馈项目