そのため、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 にキャストします。 ..」など、すべての作業をカプセル化することを目的としたこのクラスの外側で、すぐに複雑になる可能性があります。
私ができる継承のようなものがあるかどうか考えていましたが、あるとは思えません。