我想在Visual Studio中使用Web服务。我添加了一个服务引用,将它指向一个WSDL文档。我得到了一堆像冠军一样工作的生成代码。
的问题
在服务引用对话框,我所选择的“内部”作为“为生成的类访问级别”。看起来好像将“internal”关键字放在WhateverSoapClient类的前面。 Groovy的。但是,生成的模型类都在“公开部分”关键字前面。 “部分”部分是好的(甚至是期望的),但不是公众。我希望这些类也是内部的。
解决方案?
当然,Visual Studio(svcutil.exe?)正在使用一个模板来生成Reference.cs,对吧?有什么方法可以更改该模板或指定替代模板吗?还是我吠叫错了树?
谢谢!
我对这件事很陌生,所以我可能对这个问题措辞不好。
编辑:针对Tuzo的评论,我连接Visual Studio中的以下内容:
VS生成一个名为CatalystEcommerceWebserviceSoapClient的内部类,该类有一个名为Catalogue_Retrieve()的方法。 Catalogue_Retrieve()返回一个Catalog对象,并且Visual Studio生成Catalog类为“public partial”。我希望它是内部的。
这里是被如何产生什么样的一些片段:
internal partial class CatalystEcommerceWebsierviceSoapClient : System.ServiceModel.ClientBase<BcApi.EcommerceApi.CatalystEcommerceWebserviceSoap>, BcApi.EcommerceApi.CatalystEcommerceWebserviceSoap {
public BcApi.EcommerceApi.Catalogue Catalogue_Retrieve(...) {
// ...
}
}
public partial class Catalogue : object, System.ComponentModel.INotifyPropertyChanged {
// ...
}
而且响应杰米,我熟悉感谢SubSonic T4模板。所以我已经为这个问题找到了一些与T4相关的答案。不过,我可能会多挖一点。谢谢你的提示。
Visual Studio在其代码生成中使用了一个称为“T4模板”的系统(可能全部是?)。也许这可能是一个有用的术语,包括在谷歌搜索。 – 2009-11-17 23:04:30
当我添加服务引用并选择访问级别为内部时,在生成的文件中看不到任何“公开部分”。我的ServiceClient和我的DataContract类型都被标记为“内部部分”。如果你可以发布一些示例代码,这可能会有所帮助吗? – 2009-11-18 03:37:15