C# 有点像头文件,我可以在C中分离一些定义吗?

C# 有点像头文件,我可以在C中分离一些定义吗?,c#,C#,简而言之,我希望在一个地方实现一种基本结构,在另一个地方实现/定义。我希望更好地看到互连性,而不是所有的功能都将其模糊起来,主要用于设计讨论、解释等。我可以通过继承来做到这一点,但我真的不想为了实现这一点而更改所有东西的名称。不知怎的,这是一件事吗 //查看类之间关系的简单文件 公共类AllMyObjectTypes//是一个类,因为它将是它自己的对象,具有所有这些结构化内容下面的功能 { 公共类事物1 { 公共事物2[]事物2; 公共事物3[]事物3; } 公共类内容2[] { 公共int版本

简而言之,我希望在一个地方实现一种基本结构,在另一个地方实现/定义。我希望更好地看到互连性,而不是所有的功能都将其模糊起来,主要用于设计讨论、解释等。我可以通过继承来做到这一点,但我真的不想为了实现这一点而更改所有东西的名称。不知怎的,这是一件事吗

//查看类之间关系的简单文件 公共类AllMyObjectTypes//是一个类,因为它将是它自己的对象,具有所有这些结构化内容下面的功能 { 公共类事物1 { 公共事物2[]事物2; 公共事物3[]事物3; } 公共类内容2[] { 公共int版本; 公共事物1[]事物1利用者; } 公共类内容3[] { 公共字符串标题; } } //这是一个复杂的文件,用于完成所有的艰苦工作,以及所有的内部变量。 公共类Thing1:Thing1//以某种方式实现自己? { //我想使用和定义的东西,但不是上面的云结构 私人物品; 私人物品; 公共无效可用功能,但需要分离 { //成百上千行的代码使垃圾变得模糊不清 } }
接口和类声明

public interface IThing
{
    IThing2[] Thing2s();
    string DoSomething();
}

public class Thing : IThing
{
    private readonly IThing2[] _thing2s = new IThing2[1] { new Thing2() };
    public IThing2[] Thing2s() => _thing2s;

    public string DoSomething()
    {
        return "MyText";
    }
}

public interface IThing2
{

}

public class Thing2 : IThing2
{

}
使用


分部类正是我想要的,但它确实要求我不要嵌套在另一个类中。除非我也把它部分化了。。。?但不管怎样,这都让我离目标最近

//查看类之间关系的简单文件 //公共类AllMyObjectTypes//是一个类,因为它将是它自己的对象,具有所有这些结构化内容下面的功能 //{ 公共部分类内容1 { 公共事物2[]事物2; 公共事物3[]事物3; } 公共部分类内容2[] { 公共int版本; 公共事物1[]事物1利用者; } 公共部分类Thing3[] { 公共字符串标题; } //} //这是一个复杂的文件,用于完成所有的艰苦工作,以及所有的内部变量。 公共部分类Thing1//更多实现 { //我想使用和定义的东西,但不是上面的云结构 私人物品; 私人物品; 公共无效可用功能,但需要分离 { //成百上千行的代码[不再]让垃圾变得模糊不清 } }
虽然我不建议这样做,但可以使用分部类。这将允许您将类的完整实现/声明扩展到多个文件中。请注意,您在一个文件中输入的内容仍然必须是该内容的完整实现。例如,如果决定在一个文件中声明属性,则仍然需要在该文件中提供完整的属性声明和实现。不能在一个文件中说公共int值{get;set;},然后在另一个文件中展开get/set来提供代码。要做到这一点,您需要继承或接口。您需要一个两次声明的接口。您可以使用一个接口&稍后使用该接口的一个实现来包含您的详细信息扫描某人可能会在答案中提供一个示例?我正努力使它发挥作用。我得到一个错误,接口不能有字段,这有点破坏它。我想要的是字段而不是函数。@CodeMonkey使用属性代替字段。从技术上讲,分部类可以解决这个问题,它引入了不必要的混淆。我不建议大规模使用分部类,除非您能够描述需要分部类的技术原因。这是一篇有用的文章,我认为在我的例子中,它并没有增加太多的混淆,因为它所做的只是定义一些内部变量的存在,这些变量很容易通过鼠标看到。如果我在多个地方定义功能,可能会让人感到困惑,但这里并没有这么多。事实上,我的观点是要减少混淆,我现在讨论我的设置要容易得多。我的意思是,你所说的一切从技术上讲都没有错。你到底需要什么才是最重要的。我认为讨论更多的是关于哲学的,也许应该属于软件工程领域。。。我会拒绝他们的请求,如果他们想登记的话。直观地说,没有人仅仅看代码就能理解为什么一些属性在一个文件中,而另一些在另一个文件中。也许有用的函数,但WantSeparated应该放在扩展方法中
IThing thing;
thing = new Thing();
var thing2s = thing.Thing2s();
var txt = thing.DoSomething();