Изменение private полей через рефлекшн
От: Shadowspan Россия  
Дата: 11.04.03 10:31
Оценка:
Вот код:



using System;
using System.Reflection;

namespace ConsoleApplication2
{
    class Class1
    {
        
        public class A1 
        {
            private string b = "123";

            public string B { get { return b; } }
        }

        [STAThread]
        static void Main(string[] args)
        {
            A1 bbb = new A1();
            Console.WriteLine(bbb.B);
            bbb.GetType().GetField("b", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(bbb, "ghq");
            Console.WriteLine(bbb.B);
            Console.ReadLine();
        }
    }
}


На Framework 1.0 работает. Это как баг или фича, если буду использовать, то потом на других версиях Framework не отвалится?
Re: Изменение private полей через рефлекшн
От: Аноним  
Дата: 11.04.03 11:49
Оценка: 6 (1)
Здравствуйте, Shadowspan, Вы писали:


S>На Framework 1.0 работает. Это как баг или фича, если буду использовать, то потом на других версиях Framework не отвалится?


гарантию может дать только ReflectionPermission атрибут
ИМХО если делаешь для врагов — то пусть изумляются очего это вдруг изменяется private поле
Re: Изменение private полей через рефлекшн
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.04.03 18:52
Оценка: 1 (1)
Здравствуйте, Shadowspan, Вы писали:

S>На Framework 1.0 работает. Это как баг или фича, если буду использовать, то потом на других версиях Framework не отвалится?


Это фича. А отвалиться может если запустишь под пользователем с неадминскими правами.
... << RSDN@Home 1.0 beta 6a (np: тихо) >>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.