using System; using JD.Kernel.StaticHelpers; namespace JD.Reflection.Interfaces { /// /// Allows an import that creates an indefinite amount of the exported object. /// public class ExportFactory { #region Variables private readonly Func m_creator; #endregion #region Constructor internal ExportFactory(Func creator) { Throw.IfNull(creator, "creator"); m_creator = creator; } #endregion #region Methods /// /// Creates an instance of the exported object. /// /// public T Create() { return m_creator(); } #endregion } /// /// Allows an import that creates an indefinite amount of the exported object, with access to metadata. /// public class ExportFactory : ExportFactory { #region Variables private readonly TMetadata m_metadata; #endregion #region Constructor internal ExportFactory(Func creator, TMetadata metadata) : base(creator) { m_metadata = metadata; } #endregion #region Properties public TMetadata Metadata { get { return m_metadata; } } #endregion } }