static constructor
aracılığıyla ayarlanan static private readonly
üyesi olan bir static class
sahibim. Aşağıda basitleştirilmiş bir örnek. Yukarıdaki sınıf statik sınıf olduğundanStatik bir sınıfın statik özel üyesini yansıma ile ayarlamak mümkün mü?
public static class MyClass
{
private static readonly string m_myField;
static MyClass()
{
// logic to determine and set m_myField;
}
public static string MyField
{
get
{
// More logic to validate m_myField and then return it.
}
}
}
, ben almak için FieldInfo.GetValue()
çağrısında böyle pas yararlanmak için bunun bir örneğini oluşturmak ve daha sonra m_myField
değerini belirleyemezsiniz. StatInfo sınıfındaki değeri almak ve ayarlamak için FieldInfo sınıfını kullanmanın ya da birim sınaması için sorduğum sınıfı yeniden yönlendirmenin tek seçeneğidir farkında olmamın bir yolu var mı?
using System;
using System.Reflection;
class Example
{
static void Main()
{
var field = typeof(Foo).GetField("bar",
BindingFlags.Static |
BindingFlags.NonPublic);
// Normally the first argument to "SetValue" is the instance
// of the type but since we are mutating a static field we pass "null"
field.SetValue(null, "baz");
}
}
static class Foo
{
static readonly String bar = "bar";
}
Neden mü: Burada – flq
+1 ve eğer böyle bir yanıtı kabul edersem tam olarak farketmedim. SetValue ve sınıfın kendisinin bir örneği olmak zorunda değildir. Teşekkürler – JamesEggers