1

データベースからいくつかのデータを取得するなど、いくつかの操作を実行する関数があります。必要なジェネリックは常にプリミティブ型、つまり int、char、bool、string などです。そのインスタンスを簡単に作成できます。しかし、データベースから取得した値をこのインスタンスに設定することはできません。

public T PerformOperation<T>()
{    
    object instance = (T)Activator.CreateInstance(typeof(T));

    object result=FetchData();

    instance = (T)result; //It gives error on this statement
}

関数は次のように呼び出されます。

int result = PerformOperation<int>();

オブジェクト Type を常にプリミティブなジェネリック型にキャストする方法はありますか?

4

1 に答える 1

1

すでに型 T を持っているのに、それをオブジェクトにボックス化する必要はありません。

public T PerformOperation<T>()
{    
    T instance = (T)Activator.CreateInstance(typeof(T)); // why do you need this ?

    T result = FetchData();

    //instance = (T)result;
    return result;
}

または、使用する必要がある場合は、このようにすることもできますObject

public T PerformOperation<T>()
{    
    //object instance = (T)Activator.CreateInstance(typeof(T));    
    //object result=FetchData();

    return (T)FetchData(); // If I could get you correctly.
}
于 2010-06-17T05:10:16.270 に答える