Ho cercato di sperimentare con la riflessione e ho una domanda.C# 6.0 e riflessione, ottenendo il valore degli inizializzatori di proprietà
Diciamo che ho una classe, e in questa classe ho un immobile initilized con la nuova funzione di C# 6,0
Class MyClass()
{
public string SomeProperty{ get; set; } = "SomeValue";
}
non v'è alcun modo di ottenere questo valore, con la riflessione, senza initilizating classe ?
So che potrei fare questo;
var foo= new MyClass();
var value = foo.GetType().GetProperty("SomeProperty").GetValue(foo);
Ma quello che voglio fare è qualcosa di simile a questo;
typeof(MyClass).GetProperty("SomeProperty").GetValue();
So che potrei usare un campo per ottenere il valore. Ma deve essere una proprietà.
Grazie.
AFAIK Non è possibile ottenere il valore a meno che la classe sia istanziata e allocata memoria e i relativi campi siano inizializzati. Come controllo incrociato a questa maggior parte dei metodi di riflessione così noti si ha un'istanza/oggetto come parametro. –
Penso che non si possa fare, poiché la proprietà e la classe non sono statiche. Per accedere alla proprietà è necessario disporre di un oggetto valido disponibile (con riferimento in memoria). –
Come dice la risposta, a meno che l'oggetto di classe non sia inizializzato, non ci sono oggetti stringa in memoria che memorizzano il valore ad esso assegnato. Dovrai creare un'istanza per ottenere l'oggetto stringa e il valore ad esso assegnato. – danish