私はちょっと頭を抱かせることができないという問題が少しあります。Cでの一般的な処理#
私はProperty
という基本クラスを持っていますが、IntProperty
、ColorProperty
などのように、そのクラスから派生したクラスがたくさんあります。さて、私はenum型のものもいくつか持っていますが、現在は別々のクラスです。私はそれをジェネリッククラスにしたいと思いますが、ここでこの問題があります:
コードの別の部分では、それらのすべてを処理する必要があります。このために仮想関数を使用することはできません(UnityEditorで何かしています)。
現在、私は、パラメータとしてProperty
を取り、その後、私はプロパティから派生するすべてのタイプのためにこれを行う機能があります。
if(property is IntProperty)
{
IntProperty intProperty = property as IntProperty;
intProperty.theValue = specific_int_function();
}
specific_int_function
は私が持っているprividedすべての列挙型の値に対して同じであることをジェネリックからのT
。
理想的には私はこの(PSEUDっぽいコード)のような何かをしたいと思います:
(using T)
{
if(property is EnumProperty<T>)
{
EnumProperty<T> enumProperty = property as EnumProperty<T>;
enumProperty.value = (T)my_enum_value_function(typeof(T));
}
}
私はこのすべてのコードがよりよい作ることができる方法についての任意のアイデア?
私はすべての関連情報を提供しました。
編集:
それは私がそれらのクラスで仮想関数を使用することができないほどではないのですが、私はその特定のファイル内の特定の機能のいずれかを呼び出すことはできません。私は2個のコンパイル基を有し、唯一のあなたは、クラスに関数ポインタを追加し使用することができ、それらの機能(私が話しているか知っている人のためのEditorGUI機能)
よろしく、 ロリン
ハンドラに関数を渡すことはできますか? –
仮想メソッドはまったく使用できませんか、または基本クラスにのみ使用できませんか?私が尋ねる理由は、私の好みのアプローチがヘルパークラスで仮想メソッドを使用するためです。 – hvd
仮想クラスが別のファイルに移動できるのであれば、それは問題ありません。基本クラスや派生クラスではない。 – Sanctus2099