gpt4 book ai didi

c# - 如何使用 SimpleIOC 注册通用存储库

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:03 25 4
gpt4 key购买 nike

如何使用 SimpleIOC 注册通用存储库?

  public interface IRepository<T>
{

}

public class Repository<T> : IRepository<T>
{

}

SimpleIoc.Default.Register<IRepository, Repository>(); //Doesn't work, throws error


Error 1 Using the generic type 'AdminApp.Repository.IRepository<TModel>' requires 1 type arguments C:\Application Development\AdminApp\AdminApp.Desktop\ViewModel\ViewModelLocator.cs 55 44 AdminApp.Desktop

我也试过:

    SimpleIoc.Default.Register<IRepository<>, Repository<>>(); //Doesn't work either
Error 1 Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement C:\Application Development\AdminApp\AdminApp.Desktop\ViewModel\ViewModelLocator.cs 55 17 AdminApp.Desktop

最佳答案

我不相信 GalaSoft.MvvmLight.Ioc.SimpleIoc ( source code ) 支持开放通用实现。您需要创建封闭的实现并分别注册它们中的每一个:

public interface IRepository<T> where T : class { }

public class A { }
public class B { }

public class RepositoryA : IRepository<A> { }
public class RepositoryB : IRepository<B> { }

SimpleIoc.Default.Register<IRepository<A>, RepositoryA>();
SimpleIoc.Default.Register<IRepository<B>, RepositoryB>();

我建议您考虑迁移到更成熟的库,例如 SimpleInjector它对泛型有广泛的支持。

SimpleInjector 的代码很简单:

container.RegisterOpenGeneric(typeof(IRepository<>), typeof(Repository<>));

关于c# - 如何使用 SimpleIOC 注册通用存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19285919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com