Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# Constraints von generischen Argumenten prüfen (https://www.delphipraxis.net/66103-constraints-von-generischen-argumenten-pruefen.html)

Khabarakh 24. Mär 2006 18:51


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 01:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz