Вот код:
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 не отвалится?
Здравствуйте, Shadowspan, Вы писали:
S>На Framework 1.0 работает. Это как баг или фича, если буду использовать, то потом на других версиях Framework не отвалится?
гарантию может дать только ReflectionPermission атрибут
ИМХО если делаешь для врагов — то пусть изумляются очего это вдруг изменяется private поле
Здравствуйте, Shadowspan, Вы писали:
S>На Framework 1.0 работает. Это как баг или фича, если буду использовать, то потом на других версиях Framework не отвалится?
Это фича. А отвалиться может если запустишь под пользователем с неадминскими правами.
... << RSDN@Home 1.0 beta 6a (np: тихо) >>