嵌套类不再嵌套在Web引用中

时间:2013-10-22 06:47:39

标签: c# web-services .net-2.0 nested-class web-reference

我在Web服务中有一个类,其中包含嵌套类。

namespace MyWS
{
    // web service class with web methods etc. here

    public class SomeClass
    {
        // fields, properties, stuff etc.

        public class NestedClass
        {
            // ...
        }
    }
}

当我尝试从Web服务中创建Web引用时,NestedClass不再嵌套,并且在SomeClass之外作为引用中的独立类(通过MyWS.NestedClass访问) )。下次生成Web引用时,有没有办法强制它保持嵌套?某种属性可能吗?

我正在使用.NET 2.0和VS 2005,如果它有任何区别的话。如果可能,请不要建议升级到更新的技术/环境作为解决方案。

编辑:这不是建筑问题。我真的不需要将类嵌套在那里,我可以很容易地改变它,因此它更有意义。我只是想知道如果我愿意的话,是否可以强制它嵌套在引用中。

2 个答案:

答案 0 :(得分:1)

当您定义这样的服务时,它首先被转换为WSDL。然后,在客户端工具中导入WSDL,并用于以导入语言创建类和代码。

现在考虑一种不支持类嵌套的语言,那里会发生什么?

服务定义仅限于语言功能的共同点。嵌套类型不是功能集的一部分。

还有其他C#功能无法(有效)使用。

答案 1 :(得分:0)

这是更具架构性的问题,然后是技术问题,即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个不同的实体(因此更容易与它们交互),并且您还构建了它们之间的强关系。