所以我正在使用 Compact Framework 2.0 编写一个 C# 应用程序,我想知道我是否可以做一些比我脑海中计划的更简单的事情。
如果有其他框架的答案,完整的或紧凑的,但不是这个,我仍然想听听它们,这就是为什么标签此时不包括紧凑框架 2.0 的原因。
实际上,用户将能够选择他们想要为其设置设置的项目是类型 A 还是类型 B,然后他们想要在该分类下使用/设置什么特定设置。我想主要使用枚举来保持代码的可读性,因为这是我的工作场所,如果我不在身边,人们应该能够阅读它。
我的想法:
以下对于应用程序来说是全局的,而不是在特定的类中:
enum EnumTypes
{
A, B,
Num_Types,
}
enum EnumA
{
Setting1 = 0, Setting2, Setting3, //and so on...
Num_A_Settings, //WILL be different from B
}
enum EnumB
{
Setting1 = 0, Setting2, Setting3, //and so on...
Num_B_Settings, //WILL be different from A
}
以下是一个函数/属性示例,该类将使用这些值来完成其工作,显然只公开了其他类需要的内容。
public class SettingClass
{
public EnumTypes TypeUsed {/*basic get/set for property*/}
public int SelectedSettingIndex {/*basic get/set for property*/}
private ClassX[][] _settingsData = new ClassX[(int)Num_Types][];
public SettingClass()
{
for(int i = 0; i < (int)EnumTypes.Num_Types;i++)
{
if((EnumTypes)i == EnumTypes.A)
{
_settingsData[i] = new ClassX[(int)EnumA.Num_A_Settings];
//for loop for initializing each ClassX instance for A
}
else if((EnumTypes)i == EnumTypes.B)
{
_settingsData[i] = new ClassX[(int)EnumB.Num_B_Settings];
//for loop for initializing each ClassX instance for B
}
}
//just an example
public IncrementSetting()
{
if(TypeUsed == EnumTypes.A)
{ /*range checking using Num_A_Settings, increments SelectedSettingIndex*/ }
else if(TypeUsed == EnumTypes.B)
{ /*range checking using Num_B_Settings, increments SelectedSettingIndex*/ }
}
}
请不要太拘泥于每个类/变量的详细信息以及它是如何初始化的等等,因为这是一个试图代表我所问问题的想法的快速记录。我没有从我的代码中复制/粘贴它。
有没有办法,而不是只为“settingIndex”公开一个 int,我可以公开一个枚举并将 EnumA 或 EnumB 值显示给使用这个类的任何东西?
现在,任何必须获得选定设置索引的东西基本上都必须说“什么类型,A 还是 B?它是 A,好吧,所以 int 实际上意味着来自 A 的值,而不是来自 B 的值,将 int 强制转换为 EnumA。 ..” 或类似的东西,在这个旨在封装所有工作的类之外,它会很快变得复杂。
我在想是否有某种我可以做的继承或类似的事情,但我怀疑有。