Как изменить свойства доступа во время выполнения - PullRequest
0 голосов
/ 29 марта 2012

Я ищу способ изменить / добавить средства доступа к свойствам данного класса во время выполнения.Пример кода ниже, работает на .ctor класса, чего я хочу достичь, это добавить «TheSetMethod» для «установки» аксессора каждого «поля», таким образом, изменяя поле во время выполнения.К вашему сведению: за этим стоит ограничение реализации, которое заставляет меня делать это таким образом, вместо использования стандартного «get; set;»предки, поэтому я не могу иметь «получить; установить;»во время разработки.

    public string field1;

    .ctor()
    {
        Type typeWebConfig = this.GetType();
        MemberInfo[] Fields = typeWebConfig.GetMembers(BindingFlags.Public |
                              BindingFlags.Instance );
        foreach(MemberInfo member in Fields) 
            if(member.MemberType == MemberTypes.Field)
            {
                FieldInfo field = (FieldInfo)member;
                //add a delegate method to field's 'SET'
            }
     }

     void TheSetMethod(string propName)
     {
     }

любая помощь будет оценена.Приветствия

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Почему бы просто не добавить код к установщикам для начала, а затем использовать переменную, чтобы определить, должен ли код выполняться или нет?На мой взгляд, это звучит как плохой дизайн, поскольку создание «Динамического» сеттера также не может быть очень хорошо протестировано.

0 голосов
/ 29 марта 2012

Вы можете реализовать пользовательский тип DynamicObject, чтобы обрабатывать методы доступа вручную.Это будет работать только в .NET 4+.

...