![]() |
Constraints von generischen Argumenten prüfen
Gibt es im Framework oder irgendwo in den Weiten des Internets eine Methode zur Überprüfung vor MethodInfo.MakeGenericMethod, ob ein Typ die Constraints des jeweiligen Argumentes erfüllt?
Ich habe wenigstens mal die wichtigsten Sachen implementiert, aber für den Rest fange ich einfach ggf. die ArgumentException ab. Wenn es so etwas aber schon fertig gibt, hätte ich natürlich nichts dagegen :) .
Code:
protected static bool IsValidParameter(Type source, Type dest)
{ if (dest.IsGenericParameter) { foreach (Type constraint in dest.GetGenericParameterConstraints()) if (!source.IsInstanceOfType(dest)) return false; if ((dest.GenericParameterAttributes & GenericParameterAttributes.DefaultConstructorConstraint) != 0 && dest.GetConstructor(Type.EmptyTypes) == null) return false; if ((dest.GenericParameterAttributes & GenericParameterAttributes.ReferenceTypeConstraint) != 0 && dest.IsValueType) return false; return true; } else { return source.IsInstanceOfType(dest); } } |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz