C# 在另一个位置运行某些文件的最佳方式是什么?

C# 在另一个位置运行某些文件的最佳方式是什么?,c#,C#,例如,我不想在Initialize()方法中运行代码,我只想写一行代码,类似于somecode.run(),它将为我运行所有内容,允许我在不同的位置编写所有代码,以便于组织 我想让代码表现得像在那个地方一样,这样我就可以进入私人空间等 最好的方法是什么 编辑以澄清: 这里有一个例子 public class game { public void Initialize() { I want to run some code here but I don't want t

例如,我不想在Initialize()方法中运行代码,我只想写一行代码,类似于somecode.run(),它将为我运行所有内容,允许我在不同的位置编写所有代码,以便于组织

我想让代码表现得像在那个地方一样,这样我就可以进入私人空间等

最好的方法是什么

编辑以澄清:

这里有一个例子

public class game
{
    public void Initialize()
    { 
     I want to run some code here but I don't want to write it here, 
     I want to write it in another file for the sake of organization,
     and just  reference it somehow here, but yet still be able to use the
     privates as if it was in this spot
    }
}

实现所需功能的唯一方法是使用分部类。如下所示:-

// In file: game1.cs
public partial class game
{
    private int Value;

    public void Initialize()
    {
        Run();
    }
}


// In file: game2.cs
public partial class game
{
    private void Run()
    {
        Value = 2;  // Access private field.
    }
}
编辑: 您提到,除非满足您的要求,否则不希望使用分部类。我认为这是满足您需求的唯一方法,因为您的需求之一是新方法能够访问原始类的私有成员

部分类可能不满足您的要求的唯一可能情况是,您还希望该方法访问您的局部变量。但是你可以通过新方法的参数传递这些局部变量


说了所有这些,我个人不鼓励使用分部类,因为这通常不是一个好的实践。这意味着,如果您想以不同的方式进行,您需要更改您的需求。

部分类和方法应该能够完成您所说的(MS文档)

我不知道你为什么需要做比MSDN文档中定义的更复杂的事情。您可以使用virtuals来允许重写,并调用基本函数来调用原始实现。有一种适当的方法可以使用继承来允许在适当的级别上进行大量的“调整”,但是初始的分部类和方法应该允许您执行基本格式

您通常会在预先编写的代码中看到片段示例(例如,在DataContext的LINQ中)


所以你想要一个普通的方法调用,生活在不同的文件中,但是你想要这个方法能够访问调用站点上的所有局部变量吗?我肯定缺少什么,运行在不同的工作目录中?一个不同的配置文件或者??你能给出一个你想要重构的代码的最小示例吗?你熟悉吗?看起来这可能会有帮助。我编辑来澄清。部分类并不是我真正想要的,除非它能做到我所描述的,而且我认为它不能做到。
//auto-generated (or half implemented) code
public partial User
{
    public partial void OnFirstNameChanged();

    private string _FirstName = "";
    public string FirstName
    {
        get
        {
            return _FirstName;
        }
        set
        {
            _FirstName = value;
            OnFirstNameChanged();
        }
    }
}

//MyCustomStuff.cs
public partial User
{
    public partial void OnFirstNameChanged()
    {
        Console.Write(string.Format("Your name is {0}", FirstName));
    }
}