Unity CS0308错误
Unity CS0308 Error
我刚刚开始使用 WPF 和 Unity 从实现 MVVM 架构的重要资源构建应用程序。我几乎完全遵循它并查看了他们使用的源代码,一切都几乎相同。我创建了一个 class ContainerHelper class:
private static IUnityContainer _container;
static ContainerHelper()
{
_container = new UnityContainer();
_container.RegisterType<IEmployeesRepository, EmployeesRepository>(
new ContainerControlledLifetimeManager());
}
public static IUnityContainer Container
{
get { return _container; }
}
并且我创建了一个 class EmployeeListViewModel:
私有 IEmployeesRepository _repo;
public EmployeeListViewModel(IEmployeesRepository repo)
{
_repo = repo;
EditEmployeeCommand = new RelayCommand<Employees>(OnEditEmployee);
AddEmployeeCommand = new RelayCommand(OnAddEmployee);
ClearSearchCommand = new RelayCommand(OnClearSearch);
}
private string _SearchInput;
public string SearchInput
{
get { return _SearchInput; }
set
{
SetProperty(ref _SearchInput, value);
FilterEmployee(_SearchInput);
}
}
private void FilterEmployee(string searchInput)
{
if (string.IsNullOrWhiteSpace(searchInput))
{
Employees = new ObservableCollection<Employees>(_allEmployees);
}
else
{
Employees = new ObservableCollection<Employees>(_allEmployees.Where(e => e.FullName.ToLower().Contains(searchInput.ToLower())));
}
}
private void OnClearSearch()
{
SearchInput = null;
}
private void OnEditEmployee(Employees emp)
{
EditEmployeeRequest(emp);
}
private void OnAddEmployee()
{
AddEmployeeRequested(new Employees { Id = Guid.NewGuid() });
}
public event Action<Employees> AddEmployeeRequested = delegate { };
public event Action<Employees> EditEmployeeRequest = delegate { };
private ObservableCollection<Employees> _Employees;
public ObservableCollection<Employees> Employees
{
get { return _Employees; }
set { SetProperty(ref _Employees, value); }
}
private List<Employees> _allEmployees;
public async void LoadEmplooyees()
{
_allEmployees = await _repo.GetEmployeesAsync();
Employees = new ObservableCollection<Employees>(_allEmployees);
}
public RelayCommand<Employees> EditEmployeeCommand { get; private set; }
public RelayCommand AddEmployeeCommand { get; private set; }
public RelayCommand ClearSearchCommand { get; private set; }
}
这是使用 ContainerHelper 实现和传递 EmployeeListViewModel 的代码行 class:
private EmployeeListViewModel _EmployeeListViewModel;
_EmployeeListViewModel = ContainerHelper.Container.Resolve<EmployeeListViewModel>();
我不明白为什么使用 IUnityContainer.Resolve(type, sring, params ResolverOverride[]) cannot be used with type arguments.
时出现非泛型方法错误
我想了解更多关于这个错误的信息以及我可以做些什么来修复它...我已经在各个地方寻找答案。
在调用通用 Resolve
方法的代码文件顶部添加以下 using
指令:
using Microsoft.Practices.Unity;
我刚刚开始使用 WPF 和 Unity 从实现 MVVM 架构的重要资源构建应用程序。我几乎完全遵循它并查看了他们使用的源代码,一切都几乎相同。我创建了一个 class ContainerHelper class:
private static IUnityContainer _container;
static ContainerHelper()
{
_container = new UnityContainer();
_container.RegisterType<IEmployeesRepository, EmployeesRepository>(
new ContainerControlledLifetimeManager());
}
public static IUnityContainer Container
{
get { return _container; }
}
并且我创建了一个 class EmployeeListViewModel:
私有 IEmployeesRepository _repo;
public EmployeeListViewModel(IEmployeesRepository repo)
{
_repo = repo;
EditEmployeeCommand = new RelayCommand<Employees>(OnEditEmployee);
AddEmployeeCommand = new RelayCommand(OnAddEmployee);
ClearSearchCommand = new RelayCommand(OnClearSearch);
}
private string _SearchInput;
public string SearchInput
{
get { return _SearchInput; }
set
{
SetProperty(ref _SearchInput, value);
FilterEmployee(_SearchInput);
}
}
private void FilterEmployee(string searchInput)
{
if (string.IsNullOrWhiteSpace(searchInput))
{
Employees = new ObservableCollection<Employees>(_allEmployees);
}
else
{
Employees = new ObservableCollection<Employees>(_allEmployees.Where(e => e.FullName.ToLower().Contains(searchInput.ToLower())));
}
}
private void OnClearSearch()
{
SearchInput = null;
}
private void OnEditEmployee(Employees emp)
{
EditEmployeeRequest(emp);
}
private void OnAddEmployee()
{
AddEmployeeRequested(new Employees { Id = Guid.NewGuid() });
}
public event Action<Employees> AddEmployeeRequested = delegate { };
public event Action<Employees> EditEmployeeRequest = delegate { };
private ObservableCollection<Employees> _Employees;
public ObservableCollection<Employees> Employees
{
get { return _Employees; }
set { SetProperty(ref _Employees, value); }
}
private List<Employees> _allEmployees;
public async void LoadEmplooyees()
{
_allEmployees = await _repo.GetEmployeesAsync();
Employees = new ObservableCollection<Employees>(_allEmployees);
}
public RelayCommand<Employees> EditEmployeeCommand { get; private set; }
public RelayCommand AddEmployeeCommand { get; private set; }
public RelayCommand ClearSearchCommand { get; private set; }
}
这是使用 ContainerHelper 实现和传递 EmployeeListViewModel 的代码行 class:
private EmployeeListViewModel _EmployeeListViewModel;
_EmployeeListViewModel = ContainerHelper.Container.Resolve<EmployeeListViewModel>();
我不明白为什么使用 IUnityContainer.Resolve(type, sring, params ResolverOverride[]) cannot be used with type arguments.
时出现非泛型方法错误我想了解更多关于这个错误的信息以及我可以做些什么来修复它...我已经在各个地方寻找答案。
在调用通用 Resolve
方法的代码文件顶部添加以下 using
指令:
using Microsoft.Practices.Unity;