AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) C# Constraints von generischen Argumenten prüfen
Thema durchsuchen
Ansicht
Themen-Optionen

Constraints von generischen Argumenten prüfen

Ein Thema von Khabarakh · begonnen am 24. Mär 2006
Antwort Antwort
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#1

Constraints von generischen Argumenten prüfen

  Alt 24. Mär 2006, 18:51
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);
   }
}
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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