/// <summary>
 /// Creates new instance with <paramref name="delegateFactory"/> for property and constructor delegates.
 /// </summary>
 /// <param name="delegateFactory">The factory for delegates for fast access.</param>
 /// <param name="logFactory">The factory for the log to write debug information.</param>
 public ReflectionCompositeTypeProvider(ICompositeDelegateFactory delegateFactory, ILogFactory logFactory)
 {
     Ensure.NotNull(delegateFactory, "delegateFactory");
     Ensure.NotNull(logFactory, "logFactory");
     this.delegateFactory = delegateFactory;
     this.logFactory      = logFactory.Scope("ReflectionCompositeTypeProvider").Factory;
 }
 /// <summary>
 /// Creates new instance with <paramref name="delegateFactory"/> for property and constructor delegates.
 /// </summary>
 /// <param name="delegateFactory">The factory for delegates for fast access.</param>
 /// <param name="bindingFlags">The binding flags for accessing reflection.</param>
 public ReflectionCompositeTypeProvider(ICompositeDelegateFactory delegateFactory, BindingFlags bindingFlags)
     : this(delegateFactory, bindingFlags, new DefaultLogFactory())
 {
 }
 /// <summary>
 /// Creates new instance with <paramref name="delegateFactory"/> for property and constructor delegates.
 /// </summary>
 /// <param name="delegateFactory">The factory for delegates for fast access.</param>
 public ReflectionCompositeTypeProvider(ICompositeDelegateFactory delegateFactory)
     : this(delegateFactory, new DefaultLogFactory())
 {
 }