Ich verwende Reflexion, um eine Schleife durch eine Type
Eigenschaften und setzen bestimmte Typen auf ihre Standardwerte. Jetzt könnte ich den Typ umschalten und die default(Type)
explizit, aber ich würde es lieber in einer Zeile machen. Gibt es ein programmatisches Äquivalent zu default?
Antworten
Zu viele Anzeigen?
thomasgalliker
Punkte
825
Geringfügige Anpassungen an @Rob Fonseca-Ensor's Lösung : Die folgende Erweiterungsmethode funktioniert auch unter .Net Standard, da ich GetRuntimeMethod anstelle von GetMethod verwende.
public static class TypeExtensions
{
public static object GetDefault(this Type t)
{
var defaultValue = typeof(TypeExtensions)
.GetRuntimeMethod(nameof(GetDefaultGeneric), new Type[] { })
.MakeGenericMethod(t).Invoke(null, null);
return defaultValue;
}
public static T GetDefaultGeneric<T>()
{
return default(T);
}
}
...und den entsprechenden Einheitstest für diejenigen, denen die Qualität wichtig ist:
[Fact]
public void GetDefaultTest()
{
// Arrange
var type = typeof(DateTime);
// Act
var defaultValue = type.GetDefault();
// Assert
defaultValue.Should().Be(default(DateTime));
}
Kaz-LA
Punkte
228
dancer42
Punkte
151
- See previous answers
- Weitere Antworten anzeigen