Typ.GetProperties Rückkehr nichts
Betrachten Sie den folgenden code:
public class MyClass
{
public MyClass(Type optionsClassType)
{
//A PropertyInfo[0] is returned here
var test1 = optionsClassType.GetProperties();
//Even using typeof
var test2 = typeof(MyClassOptions).GetProperties();
//Or BindingFlags
var test3 = typeof(MyClassOptions)
.GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public);
}
}
public class MyClassOptions
{
public int MyProperty { get; set; }
}
Ich bin nicht in der Lage zu bekommen PropertyInfo[]
über MyClassOptions
, - Typ.GetProperties
immer ein leeres array zurück. Zuerst dachte ich, dass war ein framework bug in Xamarin.iOS, aber getestet habe ich den gleichen code in einem anderen Projekt auf dem gleichen Rahmen und es hat Prima funktioniert.
Kennt jemand mögliche Ursachen dafür?
BEARBEITEN
Dank @Fabian Bigler Antwort, die ich bekam.
In meinem Projekt, auch mit Linker set zu einem moderaten Verhalten, instanziieren MyClassOptions
war nicht genug, die Klasse zu halten-definition zur Laufzeit. Nur nach dem tatsächlich mit der Instanz(z.B. festlegen einer Eigenschaft) die Klasse ist gehalten, die in meine bauen.
Scheint, dass der linker ersetzt die "unbenutzt" - Zeug mit dummies.
Da werde ich mithilfe von reflektion eine Menge in dieses Projekt habe ich nur deaktiviert die Linker-und alles funktioniert wieder.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser code funktioniert für mich vollkommen in Ordnung:
Hinzugefügt
BindingFlags.Instance
im code. Für weitere Informationen, schauen Sie auf dieser Beitrag.Dann rufen Sie diese von außen:
HINWEIS: Seien Sie vorsichtig mit assembly linker
Wenn Sie mit der linker aktiviert, die Sie verwenden müssen, um die Klasse irgendwo, so wird es nicht abgezockt werden zur compile-Zeit. Manchmal, nur Instanziierung der Klasse in Ihrem code nicht genug ist, der linker kann erkennen, dass die Instanz nie verwendet werden, und entfernen Sie es sowieso.