Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用名称空间而不是嵌套类?_C# - Fatal编程技术网

C# 使用名称空间而不是嵌套类?

C# 使用名称空间而不是嵌套类?,c#,C#,这是一个问题,我已经有一段时间了,似乎从来没有找到一个答案,所以我希望我可以找到它在这里 //Qualifier.cs 名称空间CP{ 公共部分课程费率{ 公共部分类详细信息{ 公共部分阶级调整{ 公共部分类限定符{ 私人只读文件仅为2%; 公共限定元素{ } } } } } } //速率 名称空间CP{ 公共部分课程费率{ 公共细节; } } //Detail.cs 名称空间CP{ 公共部分课程费率{ 公共部分类详细信息{ 公共调整; } } } 如果你看这个代码示例,你会发现这里有很多嵌套,

这是一个问题,我已经有一段时间了,似乎从来没有找到一个答案,所以我希望我可以找到它在这里

//Qualifier.cs 名称空间CP{ 公共部分课程费率{ 公共部分类详细信息{ 公共部分阶级调整{ 公共部分类限定符{ 私人只读文件仅为2%; 公共限定元素{ } } } } } } //速率 名称空间CP{ 公共部分课程费率{ 公共细节; } } //Detail.cs 名称空间CP{ 公共部分课程费率{ 公共部分类详细信息{ 公共调整; } } } 如果你看这个代码示例,你会发现这里有很多嵌套,这让我很困扰,因为我觉得这不是完成我想要完成的事情的正确或最有效的方法

我这样做是因为我希望能够获得一个速率实例,例如,能够执行诸如Rate.detail.adjustment.qualifier.percent之类的操作。这为我提供了数据库中的完整对象及其所有关系

起初我认为我可以在名称空间中这样做,比如CP.Rate.Detail.Adjustment,但是因为所有这些类都存在于名称空间中,所以这显然是不可能的

所以他们的问题是,这是一个好的做法吗?如果不是,你能引导我正确的方向来纠正这个问题吗

编辑:


我这样做是为了组织目的,通过名称间距来描述对象及其关系。所以,如果我想了解利率的细节。呼叫将是Rate.Detail.GetDetail。如果我有另一个细节,比如按顺序,那就是Order.detail.GetDetail。我希望这是有意义的。

名称空间通常用于非常高的级别,以帮助解决诸如两个完全不同的库最终公开具有相同名称的类之类的问题

您试图通过嵌套类实现的功能通常通过属性来实现。Rate类将具有详细信息属性。如果Rate的Detail和Order的Detail的形状相同,则应该使用一个非嵌套的Detail类来表示两者。如果不同,则使用不同的类名RateDetail和OrderDetail


与其按类结构引用数据,不如按对象结构引用数据。例如,可以通过使用一个单例CP实例来实现这一点,该实例使用了您期望的所有值进行实例化,因此您可以说类似于CP.instance.Rate.Detail.Adjustment的内容,即使Detail的类可能是ratedeail,也可以通过一个名为Detail的属性来访问它。

名称空间通常在非常高的级别上使用,有助于解决诸如两个完全不同的库最终以相同名称公开类之类的问题

您试图通过嵌套类实现的功能通常通过属性来实现。Rate类将具有详细信息属性。如果Rate的Detail和Order的Detail的形状相同,则应该使用一个非嵌套的Detail类来表示两者。如果不同,则使用不同的类名RateDetail和OrderDetail


与其按类结构引用数据,不如按对象结构引用数据。例如,可以通过使用一个单例CP实例来实现这一点,该实例使用您期望的所有值进行实例化,因此您可以说类似于CP.instance.Rate.Detail.Adjustment的内容,即使Detail的类可能是RateDetail,也可以通过一个名为Detail的属性来访问它。

根据您的描述,我不清楚为什么要这样嵌套类,我也不理解您如何设想使用名称空间作为解决方案。您能给我们展示一些使用这种嵌套的示例代码吗?如果我们无法理解您实际想要实现的目标,那么很难提出替代方案,但通常情况下,一级嵌套类通常是不可取的。“四层楼真是疯了。”@jlris她对此感到抱歉。我在编辑中添加了一些解释。你说得对,真是疯了。这就是我在这里的原因:hahaIt看起来像是嵌套类,而不是嵌套类,您需要深入研究。这些允许您存储对其他对象的引用,并通过点语法访问属性。@这已经允许我通过点语法访问属性。请查看编辑,也许这会有助于更好地解释。@KristoferDoman您更新的代码仍然没有给出任何指示,说明为什么需要嵌套这些类。据我所知,它们不需要嵌套,也不需要是局部的。只要将它们分开,在单独的.cs文件中取消嵌套类,一切都应该很好。从您的描述来看,我不清楚为什么要嵌套类
像这样,我也无法理解您如何设想使用名称空间作为解决方案。您能给我们展示一些使用这种嵌套的示例代码吗?如果我们无法理解您实际想要实现的目标,那么很难提出替代方案,但通常情况下,一级嵌套类通常是不可取的。“四层楼真是疯了。”@jlris她对此感到抱歉。我在编辑中添加了一些解释。你说得对,真是疯了。这就是我在这里的原因:hahaIt看起来像是嵌套类,而不是嵌套类,您需要深入研究。这些允许您存储对其他对象的引用,并通过点语法访问属性。@这已经允许我通过点语法访问属性。请查看编辑,也许这会有助于更好地解释。@KristoferDoman您更新的代码仍然没有给出任何指示,说明为什么需要嵌套这些类。据我所知,它们不需要嵌套,也不需要是局部的。只需将它们分开,在单独的.cs文件中取消嵌套类,一切都会很好。好的,感谢您花时间提供帮助。我将尝试研究这种方法,因为它似乎可能是我正在寻找的。我在每个类中都有属性,正如您在我上次编辑中看到的。我很抱歉没有从一开始就包括在内。好的,谢谢你花时间来帮助我。我将尝试研究这种方法,因为它似乎可能是我正在寻找的。我在每个类中都有属性,正如您在我上次编辑中看到的。我很抱歉没有从一开始就包括这一点。