Можем ли мы создать автоматическое получение и установить свойство во время выполнения? - PullRequest
0 голосов
/ 17 февраля 2012

Я хочу создать

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.Я спрашиваю, что если я хочу установить имя свойства в строке времени выполнения

публичная строка "пользователь должен дать имя свойства" {get; set;} .it должен быть из xml r sql, но я хочу установить имя свойстваво время выполнения.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

Если вы хотите добавить свойство, чтобы Reflection предоставил его вам, это невозможно.После того, как класс был скомпилирован, нет возможности добавить в него членов.Если вы просто хотите иметь возможность установить и получить свойство, это цель Expando, и она сделает это автоматически.

0 голосов
/ 17 февраля 2012

Я не уверен, что вы просите, но с 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 ....

Здравствуйте, теперь у меня новое имя

Я надеюсь, что вы можете начать что-то с этим!

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...