Итак, я пишу приложение на C# с использованием Compact Framework 2.0 и хотел узнать, могу ли я сделать что-то более простое, чем я планировал в своей голове.
Есть ли ответы на другие фреймворки, полные или компактные , но не для этого, я все равно хотел бы их услышать, поэтому на данный момент теги не включают компактную платформу 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*/ }
}
}
Пожалуйста, не слишком увязайте в деталях того, что имеет каждый класс/переменная, как он инициализируется и еще много чего, так как это краткое изложение идеи, чтобы попытаться представить то, о чем я спрашиваю. Я не копировал/вставлял это из своего кода.
Есть ли способ вместо того, чтобы выставлять только int для «settingIndex», я мог бы выставить перечисление и показать значения EnumA или EnumB всем, кто использует этот класс?
Прямо сейчас все, что должно было получить выбранный индекс настройки, должно было бы в основном сказать: «Какой тип, A или B? .." или аналогичный, который может быстро усложниться ВНЕ этого класса, предназначенного для инкапсуляции всей работы.
Я думал о том, есть ли какое-то наследование, которое я мог бы сделать или подобное, но я сомневаюсь, что есть.