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

C# 我们可以在运行时创建自动获取和设置属性吗?,c#,properties,microsoft-dynamics,expandoobject,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;} 在运行时根据用户要求。是否可以使用Expandos或Dynamics在Csharp中执行此操作。 我在问是否要在运行时行中设置属性名 公共字符串“用户必须提供proper

我想创造

public object Value { get; set; }

public Type Type { get; set; }

public string Name { get; set; } 

public string "user has to give propertyname" {get;set;}
在运行时根据用户要求。是否可以使用Expandos或Dynamics在Csharp中执行此操作。 我在问是否要在运行时行中设置属性名


公共字符串“用户必须提供propertyname”{get;set;}。它必须来自xml r sql,但我想在运行时设置属性名。

我不确定您要求的是什么,但使用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

呜呜呜呜

你好,现在我有了一个新名字

我希望你能从这个开始


干杯

如果您想添加一个属性,以便反射将其提供给您,那是不可能的。一旦类被编译,就无法向其中添加成员。但是,如果您只想设置并获取属性,这就是
Expando
的目的,它会自动执行。

您认为您需要这个属性,您可能有什么要求?先生,我想问的是,如果我想在运行时行公共字符串中设置属性名称,“用户必须给属性名称”{get;set;}是,但你想解决的问题是什么?我正在接受训练。我必须完成这项任务。所以请告诉我怎么做。他们问我这是否可行。这个答案与我的问题无关。请再次阅读我的问题。因此,如果您的意思是希望在运行时更改现有对象的属性名称,那么我想这是不可能的!这给了我一个错误…如何解决这个问题。。。类nameex{public object call(){dynamic expando=new expandooobject();var p=expando as IDictionary;p[“Demo”]=“new val 1”;}}}类de{dynamic n=new nameex();x.call();n.Demo=10;Console.WriteLine(n.Demo);嗯,我想这正是你不能做的!我在JAVA中看到过类似的事情。我的意思是在现有对象中添加新属性。你正在调用dynamics n=new nameex()并尝试添加新属性“Demo”这里是错误!我不确定你是否能像那样解决这个问题!恭喜!如果你有时间,请告诉我们你是如何解决这个问题的!谢谢,干杯请告诉我如何创建这样一个程序我恐怕我不明白你想让你的程序做什么,所以我无法解释如何创建一个程序我来做吧。class{dynamic n=new nameex();nameex=new nameex();x.call();n.Demo=10;Console.WriteLine(n.Demo);}class nameex{public object call(){dynamic expando=new ExpandoObject();var p=expando作为IDictionary;p[“Demo”=“new val 1”;}这给了我一个错误。如何解决这个问题