我可以将c#类拆分为多个文件吗?
本文关键字:文件 拆分 我可以 | 更新日期: 2023-09-27 18:12:48
我有一个类,看起来像这样:
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类的内容分散到多个文件中?
是的,您可以使用分部类。这允许您将类拆分到多个文件中。
文件1:public static partial class ReferenceData
{
/* some methods */
}
文件2:public static partial class ReferenceData
{
/* some more methods */
}
谨慎使用此功能。过度使用会使代码难以阅读。
是的,在你这样做的每个文件的类声明中包括关键字partial
当然可以,只要在所有声明中在class
关键字之前使用partial
关键字即可。例如,创建4个不同的文件(但在相同的名称空间中),其中包含ReferenceData
类的方法和成员,如下所示:
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
}