Feedback

Überprüfen ob Objekt ein Interface implementiert

Sprache: C#

Die folgende statische Methode überprüft, ob das übergebene Objekt das übergebene Interface implementiert.
/// <summary>
/// Überprüft, ob ein Objekt ein bestimmtes Interface implementiert.
/// </summary>
public static bool IsInterfaceImplemented(object obj, Type interfaceType)
{
    if (obj != null)
    {
        return obj.GetType().FindInterfaces(new TypeFilter(
            delegate(Type type, object filter) { return (type.Name == ((Type)filter).Name)
                && (type.Namespace == ((Type)filter).Namespace); }), interfaceType).Length == 1;
    }

    return false;
}
/// <summary>
/// Überprüft, ob ein Objekt ein bestimmtes Interface implementiert.
/// </summary>
public static bool IsInterfaceImplemented(object obj, Type interfaceType)
{
    if (obj != null)
    {
        return obj.GetType().FindInterfaces(new TypeFilter(
            delegate(Type type, object filter) { return (type.Name == ((Type)filter).Name)
                && (type.Namespace == ((Type)filter).Namespace); }), interfaceType).Length == 1;
    }

    return false;
}

2 Kommentare

  1. Also ich würde es so implementieren:
    [code]static bool IsInterfaceImplemented(object obj) where I : class
    {
    return obj as I != null;
    }[/code]

  2. ok die funktion von Peter42 wäre eine möglichkeit, allerdings ist in der ursprungsfunktion ja ein Type argument übergeben. aber hierzu, rate mal für was es die Type.IsInstanceOfType Type.IsAssignableFrom gibt?