我可以在多个文件中拆分C#类吗?

时间:2011-10-29 12:56:35

标签: c#

我有一个看起来像这样的课程:

public static class ReferenceData
{

    public static IEnumerable<SelectListItem> GetAnswerType()
    {
        return new[]
            {
                new SelectListItem { Value = "1", Text = "1 answer"  },
                new SelectListItem { Value = "2", Text = "2 answers" },
                new SelectListItem { Value = "3", Text = "3 answers" }
            };
    }

    public static IEnumerable<SelectListItem> GetDatastore()
    {
        return new[]
            {
                new SelectListItem { Value = "DEV", Text = "Development"  },
                new SelectListItem { Value = "DC1", Text = "Production" }
            };
    }
    public static string GetDatastoreText(string datastoreValue)
    {
        return GetDatastore().Single(s => s.Value == datastoreValue).Text;
    }
    public static string GetDatastoreValue(string datastoreText)
    {
        return GetDatastore().Single(s => s.Text == datastoreText).Value;
    }

    // Lots more here
    // Lots more here

}

还有很多我没有在上面展示的内容。

目前,所有课程信息都在一个文件中。但是,我想将其拆分为多个文件。有没有什么方法可以将ReferenceData类的内容分散到多个文件中?

3 个答案:

答案 0 :(得分:28)

是的,您可以使用partial classes。这允许您将类拆分为多个文件。

文件1:

public static partial class ReferenceData
{
    /* some methods */
}

文件2:

public static partial class ReferenceData
{
    /* some more methods */
}

请谨慎使用此功能。过度使用会使代码难以阅读。

答案 1 :(得分:25)

是的,在您执行此操作的每个文件的类声明中包含关键字partial

http://msdn.microsoft.com/en-us/library/wa80x488.aspx

答案 2 :(得分:2)

是的,您当然可以在所有声明中使用class关键字之前的partial关键字。例如,在不同的文件中(但在相同的命名空间中)制作4个类,如下所示:

File1.css

public static partial class ReferenceData
{

    public static IEnumerable<SelectListItem> GetAnswerType()
    {
        return new[]
            {
                new SelectListItem { Value = "1", Text = "1 answer"  },
                new SelectListItem { Value = "2", Text = "2 answers" },
                new SelectListItem { Value = "3", Text = "3 answers" }
            };
    }
}

File2.cs

public static partial class ReferenceData
{

    public static IEnumerable<SelectListItem> GetDatastore()
    {
        return new[]
            {
                new SelectListItem { Value = "DEV", Text = "Development"  },
                new SelectListItem { Value = "DC1", Text = "Production" }
            };
    }
}

File3.cs

public static partial class ReferenceData
{

    public static string GetDatastoreText(string datastoreValue)
    {
        return GetDatastore().Single(s => s.Value == datastoreValue).Text;
    }
    public static string GetDatastoreValue(string datastoreText)
    {
        return GetDatastore().Single(s => s.Text == datastoreText).Value;
    }
}

File4.cs

public static partial class ReferenceData
{

    // Lots more here
    // Lots more here
}