Import property always null (Import issue)

Dec 2, 2009 at 9:27 PM

Hi,

I try for some time to get things done using MEF but now, I run into a problem i need help.
Description:
I have 2 DLL and one EXE file.
ClassLibrary1 (LoggerImpl.cs, SomeClass.cs)
ClassLibrary2 (ILogger.cs)
WindowsApplicationForms1 (WindowsApplicaitonForms1.cs, Program.cs)

I need any help or direction why this doesn't work ?

// ClassLibrary1.dll
//SomeClass.cs
 public class SomeClass
{
[Import("Logging", typeof(ILogger))]
public ILogger Log { get; set; } <-- ALWAYS NULL ???

public void Print()
{
Log.Print();
}

}

// ClassLibrary1.dll // LoggerImpl.cs namespace ClassLibrary1
{
[Export("Logging", typeof (ILogger))]
public class LoggerImpl : ILogger
{
public void Print()
{
Console.WriteLine("print called");
}
}
}

// ClassLibrary2.dll // ILogger.cs namespace LogNamespace
{
public interface ILogger
{
void Print();
}
}

// WindowsFormsApplication1.exe // WindowsFormsApplication1.cs namespace WindowsFormsApplication1
{
[Export("Form1",typeof(Form1))]
public partial class Form1 : Form
{

[Import("Logging", typeof(ILogger))]
public ILogger Log { set; get; }

private CompositionContainer _container;

public Form1()
{
InitializeComponent();
Compose();
Log.Print();

SomeClass c = new SomeClass();
c.Print();
}

private void Compose()
{
var catalog = new AggregateCatalog();

catalog.Catalogs.Add(new DirectoryCatalog("."));
catalog.Catalogs.Add(new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()));
_container = new CompositionContainer(catalog);

try { _container.ComposeParts(this);
}
catch (CompositionException compositionException)
{
MessageBox.Show(compositionException.ToString());
}
}
}
}

Dec 3, 2009 at 12:49 PM

Hi,

New to MEF, I am facing the same issue , Which you have mentioned.. Please any help regarding will appreciated.

Thanks in advance.

Deep.

Dec 4, 2009 at 10:08 PM

Problem solved.

You can see details here : Import property always null (MEF import issue) [stackoveflow].