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
}
}