Desidero impostare tutte le proprietà DateTime del mio oggetto su una data predefinita. Tuttavia, se provo a impostare i valori tramite reflection, ottengo l'eccezione: "L'oggetto non corrisponde al tipo di target".C# Impostazione dell'oggetto Valori delle proprietà DateTime tramite riflessione
private void SetDefaultValues()
{
DateTime dt = DateTime.Parse("1/1/2000", new CultureInfo("en-US", true));
foreach (PropertyInfo p in this.GetType().GetProperties())
{
if (p.PropertyType.FullName == "System.DateTime")
{
p.SetValue(dt, typeof(DateTime), null);
}
}
}
Sto facendo/pensando qualcosa di fondamentalmente scorretto?
Qual è il motivo per impostare questi attraverso il riflesso anziché direttamente? Se hai una tonnellata che devi impostare, potresti prendere in considerazione la possibilità di inserirli in una lista o in un dizionario. –
Qualsiasi motivo per evitare le proprietà standard con un getter che restituisce una classe var con la data predefinita? –
Ho provato a fare funzionalità simili in un incubo di ereditarietà multi-livello implementando un metodo di deserializzazione personalizzato basato sulla riflessione. Lo spettacolo è terribile! Stai meglio usando classi parziali e scrivendo un generatore di codice. (il mio $ 0,02). –