0

クラスを反映して UI フィールドに変換し、UI のフィールドの値を変更して保存することでオブジェクト ファイルを作成できるようにするエディタを開発中です。

問題は、一般的なリストを使用すると、それを反映するリスト内のオブジェクトのタイプがわからないため、エディタービルダーが停止し、オブジェクトをobject.

それを反映するために、リストまたは辞書内のオブジェクトのタイプが何であるかを知る必要があるだけです。

コード :

class ListUIEditor<T> : BaseEditor where T : new()
{
    void BuildEditor()
    {
       Button addbutton = new Button("+");
       addbutton.Clicked += add_Event;

        for (int i = 0; i < ((List<T>)base.boundObject).Count; i++)
        {
            container = new Container();         
            ObjectUIEditor editor = new ObjectUIEditor("itemName",
                                                       ((List<T>)base.boundObject)[i], 
                                                       container);
            editor.buildEditor();
            itemsSubEditors.Add(i, editor);
        }
    }

    protected void add_Event(object sender, EventArgs e)
    {       
        T newObject = new T();          
        container = new Container();            
        ObjectUIEditor editor = new ObjectUIEditor("itemName", newObject, container);
        editor.buildEditor();           
        itemsBox.ShowAll();
    }
}
4

1 に答える 1

0

これを試して:

Type type = listObj.GetType().GetGenericArguments()[0];

参照

于 2013-06-29T10:03:20.800 に答える