Skip to content

Instantly share code, notes, and snippets.

@JoshVarty
Forked from madskristensen/ImportMefComponent.cs
Created December 13, 2015 01:08
Show Gist options
  • Save JoshVarty/8b23e3f5b97458576d4d to your computer and use it in GitHub Desktop.
Save JoshVarty/8b23e3f5b97458576d4d to your computer and use it in GitHub Desktop.
Import MEF components from non-MEF exported classes
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.TableManager;
public class ExtensionPackage : Package
{
[Import]
private ITableManagerProvider _tableManagerProvider;
protected override void Initialize()
{
base.Initialize();
this.SatisfyImportsOnce(); // This calls the extension method
ITableManager errorsTable = _tableManagerProvider.GetTableManager(StandardTables.ErrorsTable);
}
}
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.ComponentModelHost;
using Microsoft.VisualStudio.Shell;
public static class MefExtensions
{
private static IComponentModel _compositionService;
public static void SatisfyImportsOnce(this object o)
{
if (_compositionService == null)
{
_compositionService = ServiceProvider.GlobalProvider.GetService(typeof(SComponentModel)) as IComponentModel;
}
if (_compositionService != null)
{
_compositionService.DefaultCompositionService.SatisfyImportsOnce(o);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment