/// <summary> /// Implements the interfaces and any of their descendent interfaces. /// </summary> /// <param name="typeBuilder">A type builder.</param> /// <param name="interfaceTypes">The interface type.</param> /// <returns>The type builder.</returns> public static ITypeBuilder ImplementsInterfaces(this ITypeBuilder typeBuilder, params Type[] interfaceTypes) { foreach (var interfaceType in interfaceTypes) { typeBuilder.Implements(interfaceType); Type[] baseTypes = interfaceType.GetInterfaces(); if (baseTypes.IsNullOrEmpty() == false) { typeBuilder.ImplementsInterfaces(baseTypes); } } return(typeBuilder); }
/// <summary> /// Implements the interface and any of it descendent interfaces. /// </summary> /// <param name="typeBuilder">A type builder.</param> /// <param name="interfaceType">The interface type.</param> /// <returns>The type builder.</returns> public static ITypeBuilder ImplementsInterfaces(this ITypeBuilder typeBuilder, Type interfaceType) { typeBuilder.Implements(interfaceType); Type[] implementedInterfaces = interfaceType.GetInterfaces(); if (implementedInterfaces.IsNullOrEmpty() == false) { foreach (Type type in implementedInterfaces) { typeBuilder.ImplementsInterfaces(type); } } return(typeBuilder); }