Ich bin Unit Testing eine Klasse, die 2 private Mitglied Variablen innerhalb davon hat. Ich habe eine Klasse erstellt, die von der getesteten Klasse erbt.Reflektion in einer Windows 8 App
Zuerst habe ich nur die Variablen gemacht, auf die ich zugreifen wollte protected
, aber ich dachte, es wäre cool, wenn ich sie privat halten und mit Reflektion auf sie zugreifen könnte. Ich googelte und fand verschiedene Artikel (& Fragen, die hier gestellt wurden (http://stackoverflow.com/questions/4097682/c-sharp-use-reflection-to-get-a-private-member-variable-from-a-derived) (Klasse) und die angenommenen Antworten haben nicht funktioniert.
Die SO Frage verknüpft, sagte:
// _commandCollection is an instance, private member
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
// Retrieve a FieldInfo instance corresponding to the field
FieldInfo field = GetType().GetField("_commandCollection", flags);
// Retrieve the value of the field, and cast as necessary
IDbCommand[] cc =(IDbCommand[])field.GetValue(this);
Es besteht jedoch keine GetField()
Methode. Ich versuchte eine Methode, die ähnlich aussah, GetRuntimeField()
, aber das hat nicht funktioniert.
Mein Code (in der erbenden Klasse) ist:
public List<BaseData> RealAllData
{
get
{
// Use reflection to access the private variable
FieldInfo field = GetType().GetRuntimeField("mAllData");
return (List<BaseData>)field.GetValue(this);
}
}
Wenn jemand weiß, warum dies nicht funktioniert, dann wäre ich dankbar. Vielen Dank.
Ist dies der Bereich, in dem [Reflection in .NET Framework für Windows Store Apps] (http://msdn.microsoft.com/) de-de/library/hh535795.aspx) geht es darum, oder ist das etwas anderes? – AakashM
Ja, diese Artikel haben mir geholfen, loszulegen. Vielen Dank – Luke