मैं एमईएफ का उपयोग करके चीजें करने के लिए कुछ समय की कोशिश करता हूं लेकिन अब, मैं एक समस्या में भाग लेता हूं, मुझे मदद चाहिए।आयात संपत्ति हमेशा शून्य (एमईएफ आयात मुद्दा)
विवरण: मेरे पास 2 डीएलएल और एक EXE फ़ाइल है। ClassLibrary1 (LoggerImpl.cs, SomeClass.cs) ClassLibrary2 (ILogger.cs) WindowsApplicationForms1 (WindowsApplicaitonForms1.cs, Program.cs)
मैं कोई मदद या दिशा क्यों यह काम नहीं करता है? (नई SomeClass())
// 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());
}
}
}
}
आपका 'तो इसके आयात सेट किया जा कभी नहीं होगा SomeClass', संरचना में शामिल नहीं है। – dtb