我在 Web 服务中有一个包含嵌套类的类。
namespace MyWS
{
// web service class with web methods etc. here
public class SomeClass
{
// fields, properties, stuff etc.
public class NestedClass
{
// ...
}
}
}
当我尝试从 Web 服务中生成 Web 引用时,NestedClass
不再嵌套,并且作为引用中的独立类(通过 MyWS.NestedClass
访问)在SomeClass
之外。有没有办法在下次生成 Web 引用时强制它保持嵌套?也许是某种属性?
我正在使用.NET 2.0和VS 2005,如果它有任何区别的话。如果可能,请不要建议升级到更新的技术/环境作为解决方案。
编辑:这不是建筑问题。我真的不需要将类嵌套在那里,我可以轻松更改它,使其更有意义。我只是想知道如果我愿意,是否可以强制它嵌套在引用中。
当你定义这样的服务时,它首先被转换为WSDL。然后将该 WSDL 导入到客户端工具中,并用于使用导入语言创建类和代码。
现在考虑一种不支持类嵌套的语言,那里会发生什么?
服务定义仅限于语言功能的共同点。嵌套类型不是功能集的一部分。
还有其他无法(有效)使用的 C# 功能。
这更多的是架构问题,然后是技术问题,imo。
在您的情况下,我看到您声明嵌套类public
.没有太多理由这样做,如果不是人为地或声明性地,在这两种类型之间创建依赖关系。但这可以通过其他方式完成,避免嵌套,例如:
public class A {
}
public class Dependend {
//The only available construstor of Dependent is that one which
//accepts A type
public Dependend(A aType) {
}
}
在这种情况下,您有 2 个不同的实体(因此更容易与它们交互),并且您还可以在它们之间构建牢固的关系。