0

こんにちは、同じプロパティを持つ異なるクラスを使用する必要があり、クラスのプロパティに動的にアクセスしたいと考えています。

public Class1
{
public const prop1="Some";
}
public Class2
{
 public const prop1="Some";
}

そして、私のコードでは、このようにクラス名を取得しています

string classname="Session["myclass"].ToString();";//Say I have Class1 now.

そして、 prop1 の値を取得したいと思います。

Something like
 string mypropvalue=classname+".prop1";//my expected result is Some 

/// Type typ=Type.GetType(クラス名);

これを手に入れるのを手伝ってください

4

2 に答える 2

1

反射

var nameOfProperty = "prop1";
var propertyInfo = Class1Object.GetType().GetProperty(nameOfProperty);
var value = propertyInfo.GetValue(myObject, null);

静的:

var nameOfProperty = "prop1";
var propertyInfo = typeof(Class1).GetProperty("prop1", BindingFlags.Static);
var value = propertyInfo.GetValue(myObject, null);

文字列からのクラス参照

編集(例を作成しました):

class Program
    {
        static void Main(string[] args)
        {

            var list = Assembly.Load("ConsoleApplication4").GetTypes().ToList();
            Type ty = Type.GetType(list.FirstOrDefault(t => t.Name == "Foo").ToString());
            //This works too: Type ty = Type.GetType("ConsoleApplication4.Foo");
            var prop1 
                 = ty.GetProperty("Temp", BindingFlags.Static | BindingFlags.Public);


            Console.WriteLine(prop1.GetValue(ty.Name, null));
            Console.ReadLine();
        }

    }

    public static class Foo
    {
        private static string a = "hello world";
        public static string Temp
        {
            get
            {
                return a;
            }
        }
    }

MSDN

于 2013-07-15T07:10:35.100 に答える
0

次の関数を使用して、オブジェクトからプロパティ値を動的に取得できます。
オブジェクトをスキャンとプロパティ名に渡すだけです

public static object GetPropValue(object src, string propName)
{
    return src.GetType().GetProperty(propName).GetValue(src, null);
}
于 2013-07-15T07:11:25.823 に答える