C# 是否有任何方法可以在不同的文件夹中拆分部分类的不同方法,并使用正确的命名空间约定?

C# 是否有任何方法可以在不同的文件夹中拆分部分类的不同方法,并使用正确的命名空间约定?,c#,.net,C#,.net,我有一门课是这样的: namespace Test.DataService { public partial class DataManager { public int GetDeckA() { }; public int GetDeckB() { }; public int GetCarA() { }; public int GetCarB() { }; 由于涉及两种不同的内容,我希望将其拆分,以便将这些

我有一门课是这样的:

namespace Test.DataService
{
    public partial class DataManager
    {
        public int GetDeckA() { };
        public int GetDeckB() { };
        public int GetCarA() { };
        public int GetCarB() { };   
由于涉及两种不同的内容,我希望将其拆分,以便将这些方法拆分为两个不同文件夹中的Deck.cs和Car.cs两个不同文件:

文件夹组,文件名组.cs

namespace Test.DataService.Deck
{
    public partial class DataManager
    {
        public int GetDeckA() { };
        public int GetDeckB() { }; 
namespace Test.DataService.Car
{
    public partial class DataManager
    {
        public int GetCarA() { };
        public int GetCarB() { };   
文件夹Car,文件名Car.cs

namespace Test.DataService.Deck
{
    public partial class DataManager
    {
        public int GetDeckA() { };
        public int GetDeckB() { }; 
namespace Test.DataService.Car
{
    public partial class DataManager
    {
        public int GetCarA() { };
        public int GetCarB() { };   
在实际代码中,它要复杂得多,但我希望这是一个很好的例子。有人能建议我如何将一个类或一个类的方法拆分为两个不同文件夹中的文件,并且仍然保持名称空间的正确命名约定吗?我认为如果我将它们都放在Namespace Test.DataService中,我可以做到这一点,但是如果这两个文件位于不同的文件夹中,那么这确实不是正确的名称空间


是否有任何方法可以将这些方法移动到另一个类中,该类是DataManager的一部分,并且可以轻松访问,因为这可能会为我解决问题。我想问题是我必须创建一个新的类实例。我可以在DataManager的构造函数中这样做吗?

不,不可能用不同名称空间中的部分创建分部类。名称空间允许我们拥有两个或多个具有相同名称的不同类,这些类彼此不冲突且彼此不同

在不同名称空间中具有相同名称的两个类彼此分离,就像在同一名称空间中具有不同名称的两个类一样。这就是名称空间的用途


您可以将类的部分放在不同的文件夹中。但是您的问题指定要遵循名称空间与文件夹匹配的约定,这意味着分部类必须存在于两个名称空间中,这是不可能的。

不,不可能创建一个分部类,其中的部分位于不同的名称空间中。名称空间允许我们拥有两个或多个具有相同名称的不同类,这些类彼此不冲突且彼此不同

在不同名称空间中具有相同名称的两个类彼此分离,就像在同一名称空间中具有不同名称的两个类一样。这就是名称空间的用途


您可以将类的部分放在不同的文件夹中。但是您的问题指定要遵循名称空间匹配文件夹的约定,这意味着分部类必须存在于两个名称空间中,这是不可能的。

不,这是一件好事。类、函数、模块和名称空间是组织代码的好方法,以避免几周后“丢失”。在引用的名称空间列表中,可以看到类的耦合(或解耦)程度。关于这个类正在公开的行为(公共方法),我们可以看到这个类的责任是什么。阅读文件时,可以看到类的内部(字段、方法)的内聚级别。当分割所有这些(行为、状态、私有方法)时,所有可读性都会丢失


这一定是这个数据管理器必须在2个名称空间中“生存”的原因。一个原因可能是它做得太多了。为什么不把它分成两个不同的类,如果你已经在使用它,给它们取一个合适的名字(管理者通常是一种代码气味)

不,这是一件好事。类、函数、模块和名称空间是组织代码的好方法,以避免几周后“丢失”。在引用的名称空间列表中,可以看到类的耦合(或解耦)程度。关于这个类正在公开的行为(公共方法),我们可以看到这个类的责任是什么。阅读文件时,可以看到类的内部(字段、方法)的内聚级别。当分割所有这些(行为、状态、私有方法)时,所有可读性都会丢失


这一定是这个数据管理器必须在2个名称空间中“生存”的原因。一个原因可能是它做得太多了。为什么不将它分为两个不同的类,如果您已经在使用它,为什么不给它们一个正确的名称(管理者通常是一种代码气味)

这是完全正确的。逻辑命名(名称空间)和物理命名(文件)在C#中完全不相关(与Java不同,Java可能会给人一种有一些限制的印象)。您可以将文件放在不同的文件夹中,但名称空间是其标识的一部分。我使用的一种约定是,我用一个尾随下划线命名文件夹,以指示我需要删除名称空间声明的该部分,例如“Deck_”和“Car_”。(我还编写了一个分析器来提供一个警告和一个代码修复程序来删除它。)正如Wiktor提到的,名称空间与文件夹无关,因此您可以轻松地将文件放在不同的文件夹中,同时仍在同一名称空间中。我只是在建议中添加了一些注释,但不确定这是否对我有帮助。我只是想了解一些想法。到目前为止,我很喜欢甲板和汽车的建议。这一部分我在寻找一些想法,听起来你需要一些主观的东西,某种程度上比其他东西更适合你。为了让它发挥作用,你必须以某种方式缩小你的需求。这是完全正确的。逻辑命名(名称空间)和物理命名(文件)在C#中完全不相关(与Java不同,Java可能会给人一种有一些限制的印象)。您可以将文件放在不同的文件夹中,但名称空间是其标识的一部分。我使用的一种约定是,我用一个尾随下划线命名文件夹,以指示我需要删除名称空间声明的该部分,例如“Deck_”和“Car_”。(我还编写了一个分析器来显示一个警告,并编写了一个代码修复程序来删除它。)正如Wiktor提到的,名称空间与文件夹无关,因此,当文件被删除时,您可以轻松地将文件放在不同的文件夹中