|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.Composition.Hosting;
using System.ComponentModel.Composition;
namespace MefRX
{
public sealed class SimpleComposer
{
#region Data
static readonly SimpleComposer instance = new SimpleComposer();
#endregion
#region Ctor
static SimpleComposer()
{
}
private SimpleComposer()
{
}
#endregion
#region Public Methods
/// <summary>
/// Resolve an exported function
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static Func<object, IObservable<EventArgsWrapper>> Resolve(string name)
{
var rxSenders = Instance.RxEventExporters;
if (rxSenders == null) throw new InvalidOperationException(
"Part composer not initialized");
try
{
return Instance.RxEventExporters.FirstOrDefault(
s => s.Metadata.ExportableName == name).Value;
}
catch (Exception ex)
{
return null;
}
}
public void Compose()
{
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(
System.Reflection.Assembly.GetExecutingAssembly()));
var container = new CompositionContainer(catalog);
container.ComposeParts(Instance);
}
#endregion
#region Public Properties
[ImportMany]
public Lazy<Func<object, IObservable<EventArgsWrapper>>,
IExportableName>[] RxEventExporters { get; set; }
public static SimpleComposer Instance
{
get
{
return instance;
}
}
#endregion
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I currently hold the following qualifications (amongst others, I also studied Music Technology and Electronics, for my sins)
- MSc (Passed with distinctions), in Information Technology for E-Commerce
- BSc Hons (1st class) in Computer Science & Artificial Intelligence
Both of these at Sussex University UK.
Award(s)
I am lucky enough to have won a few awards for Zany Crazy code articles over the years
- Microsoft C# MVP 2016
- Codeproject MVP 2016
- Microsoft C# MVP 2015
- Codeproject MVP 2015
- Microsoft C# MVP 2014
- Codeproject MVP 2014
- Microsoft C# MVP 2013
- Codeproject MVP 2013
- Microsoft C# MVP 2012
- Codeproject MVP 2012
- Microsoft C# MVP 2011
- Codeproject MVP 2011
- Microsoft C# MVP 2010
- Codeproject MVP 2010
- Microsoft C# MVP 2009
- Codeproject MVP 2009
- Microsoft C# MVP 2008
- Codeproject MVP 2008
- And numerous codeproject awards which you can see over at my blog