我们可以在运行时创建自动获取和设置属性吗?

时间:2012-02-17 06:50:01

标签: c# properties microsoft-dynamics expandoobject

我想创建

public object Value { get; set; }

public Type Type { get; set; }

public string Name { get; set; } 

public string "user has to give propertyname" {get;set;}

在运行时根据用户要求。是否可以在Csharp中使用Expandos或Dynamics执行此操作。  我问如果我想在运行行中设置属性名称

public string“user必须提供propertyname”{get; set;} .it必须来自xml r sql但我想在运行时设置属性名称。

2 个答案:

答案 0 :(得分:0)

我不确定您要求的是什么,但使用Expandos,您可以执行以下操作:

        dynamic d = new ExpandoObject();
        d.Name = "MyNameIsTest";
        d.Age = 26;
        d.Weight = 62.5d;
        d.dosomethingforme = "blablabla ....";
        d.GreetMe = new Action(delegate()
        {
            Console.WriteLine("Hello {0}", d.Name);
        });

在您的代码中的某处,您可以使用以下内容:

    public void ResolveDynamic(dynamic obj)
    {
        Console.WriteLine(obj.Name);
        obj.Name = "Now I got a new name";

        Console.WriteLine(obj.dosomethingforme);

        obj.GreetMe();
    }

所以如果你调用这个函数,你将得到以下信息!

MyNameIsTest

blablabla ....

你好我现在有一个新名字

我希望你能用这个来开始!

干杯!

答案 1 :(得分:0)

如果你想添加一个反射会给你的属性,那是不可能的。一旦编译了一个类,就无法向其中添加成员。但是,如果你只是想设置和获取属性,那就是Expando的目的,它会自动完成。