Я новичок в. Net Technologies, и я хотел начать с многоуровневого приложения в качестве теста для Unity и WPF. При выполнении я получаю следующее исключение: ConfigurationErrorsException: Не найдено никаких действительных атрибутов для создания значения параметра mefRepository . Проверьте конфигурационный файл. Ниже конфигурация Unity:Использование контейнера MS Unity DI и WPF в многоуровневом приложении
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<typeAliases>
<typeAlias alias="IUnitOfWork" type="DDDTest.Domain.Core.IUnitOfWork,DDDTest.Domain.Core"/>
<typeAlias alias="UnitOfWork" type="DDDTest.Infrastructure.Data.MainModule.UnitOfWork,DDDTest.Infrastructure.Data.MainModule"/>
<typeAlias alias="IRepository" type="DDDTest.Domain.Core.IRepository,DDDTest.Domain.Core"/>
<typeAlias alias="Repository" type="DDDTest.Infrastructure.Data.MainModule.Repository,DDDTest.Infrastructure.Data.MainModule"/>
<typeAlias alias="IMefRepository" type="DDDTest.Domain.MainModule.Entities.IMefRepository,DDDTest.Domain.MainModule.Entities"/>
<typeAlias alias="MefRepository" type="DDDTest.Infrastructure.Data.MainModule.Repositories.MefRepository,DDDTest.Infrastructure.Data.MainModule.Repositories"/>
<typeAlias alias="IMefService" type="DDDTest.Domain.MainModule.Services.IMefService,DDDTest.Domain.MainModule.Services"/>
<typeAlias alias="MefService" type="DDDTest.Domain.MainModule.Services.MefService,DDDTest.Domain.MainModule.Services"/>
</typeAliases>
<container>
<register type ="IUnitOfWork" mapTo="UnitOfWork" name="UoW"/>
<register type="IRepository" mapTo="Repository">
<constructor>
<param name="uow" dependencyName="UoW"/>
</constructor>
</register>
<register type ="IMefRepository" mapTo="MefRepository" name="MefRepo"/>
<register type ="IMefService" mapTo="MefService">
<constructor>
<param name="mefRepository" dependenceyName="MefRepo"/>
<param name="mefRepository" dependenceyType="MefRepository"/>
</constructor>
</register>
</container>
</unity>
И MefService класс выглядит следующим образом:
namespace DDDTest.Domain.MainModule.Services
{
public class MefService : IMefService, IDisposable
{
IMefRepository _mefRepo;
public MefService(IMefRepository mefRepository)
{
_mefRepo = mefRepository;
}
//Add New Mef
public void AddMef(misfor _mef)
{
_mefRepo.Add(_mef);
}
//Delete a mef
public void DeleteMef(misfor _mef)
{
_mefRepo.Remove(_mef);
}
//Get a new empty mef
public misfor GetNewObject()
{
return _mefRepo.GetNewEmpty();
}
//Find Mef By Primary Key
public misfor GetById(string ctr, short mef)
{
return _mefRepo.GetById(ctr, mef);
}
public void Dispose()
{
_mefRepo = null;
}
}
}
и окно WPF выглядит следующим образом:
namespace DDDTest.Presentation.MainModule
{
/// <summary>
/// Logique d'interaction pour MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
IMefRepository _mr;
MefService _ms;
misfor _currentMef;
public IUnityContainer unityContainer;
public MainWindow()
{
InitializeComponent();
}
//Initialisation du container unity pour l'injection des dépendances
public void InitIocContainer()
{
unityContainer = new UnityContainer();
unityContainer.LoadConfiguration();
}
private void MefCode_KeyDown(object sender, KeyEventArgs e)
{
string c = txctrCode.Text;
short m = short.Parse(txMefCode.Text);
if (e.Key == Key.Enter)
{
_currentMef = _ms.GetById(c, m);
if (_currentMef != null)
grdMaster.DataContext = _currentMef;
else
MessageBox.Show("Mise en force introuvable.", "Erreur", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
InitIocContainer();
_ms = new MefService(_mr);
_currentMef = _ms.GetNewObject();
grdMaster.DataContext = _currentMef;
}
}
}
Первая проблема заключается в том, что Я не знаю, где инициализировать контейнер Unity. Я нашел много образцов в Сети, но все о Unity и WPF/MVVM. Вторая проблема в том, что я не могу найти источник ошибки, потому что код класса MefService кажется правильным. Ваша помощь приветствуется.