Sprache: C#
Prüft, ob ein Typ auch (null)-Werte annehmen kann, wie z.B. 'bool?' oder 'object'
using System;
namespace MarcelJKloubert
{
public static Tools
{
/// <summary>
/// Prüft, ob ein Typ (null)-Werte annehmen kann oder nicht
/// </summary>
/// <param name="type">Typ, der geprüft werden soll</param>
/// <returns>Kann (null)-Werte annehmen (true) oder nicht (false)</returns>
public static bool IsNullable(Type type)
{
if (null == type)
{
throw new ArgumentNullException("type");
}
if (!type.IsValueType)
{
// kein Wertetyp, daher kann der Typ (null)-Werte annehmen
return true;
}
// Wenn Nullable.GetUnderlyingType() einen übergeordneten Typ ermitteln kann,
// bedeutet dies, dass dies ein Wertetyp ist, der (null)-Werte annehmen kann,
// z.B. bool?
return Nullable.GetUnderlyingType(type) is Type;
}
}
}
using System;
namespace MarcelJKloubert
{
public static Tools
{
/// <summary>
/// Prüft, ob ein Typ (null)-Werte annehmen kann oder nicht
/// </summary>
/// <param name="type">Typ, der geprüft werden soll</param>
/// <returns>Kann (null)-Werte annehmen (true) oder nicht (false)</returns>
public static bool IsNullable(Type type)
{
if (null == type)
{
throw new ArgumentNullException("type");
}
if (!type.IsValueType)
{
// kein Wertetyp, daher kann der Typ (null)-Werte annehmen
return true;
}
// Wenn Nullable.GetUnderlyingType() einen übergeordneten Typ ermitteln kann,
// bedeutet dies, dass dies ein Wertetyp ist, der (null)-Werte annehmen kann,
// z.B. bool?
return Nullable.GetUnderlyingType(type) is Type;
}
}
}
Alte URL:
/snippet/pruefen-ob-ein-typ-null-werte-annehmen-kann/1242
Könnte man eventuell als Extension Method bauen 😀
Ein bissel abgewandelt:
[code]public static class Tools
{
///
///
/// Typ, der geprüft werden sollKann (null)-Werte annehmen (true) oder nicht (false)
///
public static bool IsNullable(this object type)
{
Type realType = type.GetType();
if (null == type)
{
throw new ArgumentNullException(„type“);
}
if (!realType.IsValueType)
{
// kein Wertetyp, daher kann der Typ (null)-Werte annehmen
return true;
}
// Wenn Nullable.GetUnderlyingType() einen übergeordneten Typ ermitteln kann,
// bedeutet dies, dass dies ein Wertetyp ist, der (null)-Werte annehmen kann,
// z.B. bool?
return Nullable.GetUnderlyingType(realType) is Type;
}
}[/code]
Und shcon hat man ne geile Extension.
Ich find das snippet gut 😀
ja, das finde ich sogar noch ne VIEL bessere Lösung! 🙂 dann kann man das „if (null == type)“ ja weglassen…