-1

(foo<mypara>)objがジェネリック引数である場合のように、C# でジェネリック引数を使用してオブジェクトをキャストしようとしてい myparaます。

public class foo<T>
{
   public string name {get;set;}
    public func<T> value {get;set;}
}

var mypara = myfoo.GetType().GetGenericArguments();

ここで、 の値mypara.Name"int"または"string"であり、実際には型の文字列表現です。

しかし、どうすれば本当のタイプの mypara を取得できますか?

4

3 に答える 3

0

反射を使用します。オブジェクトの GetType() は、型の名前を取得します。そのオブジェクト タイプにするには、さらに反射が必要です。

于 2012-04-09T13:36:02.867 に答える
0

コード例は役に立ちますが、必要なのはobj.GetType()? これが、オブジェクトの型を取得する方法です。

于 2012-04-09T13:25:29.853 に答える
0

次のように実行できます。

if (value != null)
{
    if (value.GetType().IsGenericType == true
        && value.GetType().GetGenericArguments().Length >= 0)
    {
        IList _valuesList = null;

        if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("int"))
        {
            _valuesList = value as List<int>;
        }
        else if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("decimal"))
        {
            _valuesList = value as List<decimal>;
        }
        else if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("double"))
        {
            _valuesList = value as List<double>;
        }
        else if (value.GetType().GetGenericArguments()[0].ToString().ToLower().Contains("string"))
        {
            _valuesList = value as List<string>;
        }
    }
}

Ref:リフレクション
を使用してジェネリック インスタンスのジェネリック型を取得する
リフレクション ジェネリック リストの型のプロパティ
リフレクションとジェネリック型

于 2012-04-09T13:35:28.483 に答える