我有一个看起来像这样的课程:
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类的内容分散到多个文件中?
答案 0 :(得分:28)
是的,您可以使用partial classes。这允许您将类拆分为多个文件。
文件1:
public static partial class ReferenceData
{
/* some methods */
}
文件2:
public static partial class ReferenceData
{
/* some more methods */
}
请谨慎使用此功能。过度使用会使代码难以阅读。
答案 1 :(得分:25)
是的,在您执行此操作的每个文件的类声明中包含关键字partial
。
答案 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
}