C# 'da, (myObject
) bir nesneye sahip olduğunuzu varsayalım, yani MyClass
sınıfının bir örneğidir. Yalnızca myObject
'u kullanarak, MyClass
statik üyesine nasıl erişirsiniz? Genellikle olsa bunu önlemek için çalışacaktıC# - Bu sınıfın bir örneği verildiğinde bir sınıfın statik üyesine nasıl erişilir?
Type type = myObject.GetType();
FieldInfo field = type.GetField("i", BindingFlags.Public |
BindingFlags.Static);
int value = (int) field.GetValue(null);
çok kırılgan ...:
class MyClass
{
public static int i = 123 ;
}
class MainClass
{
public static void Main()
{
MyClass myObject = new MyClass() ;
myObject.GetType().i = 456 ; // something like this is desired,
// but erroneous
}
}
Neden daha doğrudan başvuruda bulunamadığınızı açıklayabilir misiniz? Burada biraz kod kokusu var. –
Benim yöntemim, Block türünde bir parametre alır, ancak iletilen asıl argüman, bloğun birkaç * alt sınıfından * birine ait bir sınıftır ve her alt sınıfın, statik üyenin kendi kopyasına sahip olması gerekir (bu rol oynar Benim soru kodunda "i" ile). – JaysonFix
IMHO, çoğu kez "Bunu nasıl yaparım?" "Bunu yapma." Bu zamanlardan biri olduğundan şüpheleniyorum. – tnyfst