Einzelnen Beitrag anzeigen

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