Skip to content

Instantly share code, notes, and snippets.

@yannduran
Forked from madskristensen/ImportMefComponent.cs
Created November 15, 2015 06:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yannduran/d8ec97ae8ef1aa3cbdc7 to your computer and use it in GitHub Desktop.
Save yannduran/d8ec97ae8ef1aa3cbdc7 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