5

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.

+3

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

+0

Ja, diese Artikel haben mir geholfen, loszulegen. Vielen Dank – Luke

Antwort

2

Sie können Ihren Reflexionscode auch in eine Portable Class Library einfügen, die auf .NET 4 und Windows Store-Apps abzielt. Sie haben dann Zugriff auf die "alte" Reflektions-API, einschließlich BindingFlags usw.

Verwandte Themen