C# 如何向SimpleIOC注册通用存储库

C# 如何向SimpleIOC注册通用存储库,c#,dependency-injection,inversion-of-control,repository-pattern,C#,Dependency Injection,Inversion Of Control,Repository Pattern,如何向SimpleIOC注册通用存储库 public interface IRepository<T> { } public class Repository<T> : IRepository<T> { } SimpleIoc.Default.Register<IRepository, Repository>(); //Doesn't work, throws error Error 1 Using

如何向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
公共接口IRepository
{
}
公共类存储库:IRepository
{
}
SimpleIoc.Default.Register()//不起作用,抛出错误
错误1使用泛型类型“AdminApp.Repository.IRepository”需要1个类型参数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
simpleoc.Default.Register()//也不行
错误1只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句C:\Application Development\AdminApp\AdminApp.Desktop\ViewModel\ViewModelLocator.cs 55 17 AdminApp.Desktop

我不相信
GalaSoft.MvvmLight.Ioc.SimpleIoc
()支持开放泛型实现。您需要创建封闭的实现并分别注册它们:

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>();
公共接口i假设,其中T:class{}
公共A类{}
公共类B{}
公共类RepositoryA:IRepository,它对泛型有广泛的支持

SimpleInjector的代码如下所示:

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

我不相信
GalaSoft.MvvmLight.Ioc.SimpleIoc
()支持开放泛型实现。您需要创建封闭的实现并分别注册它们:

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>();
公共接口i假设,其中T:class{}
公共A类{}
公共类B{}
公共类RepositoryA:IRepository,它对泛型有广泛的支持

SimpleInjector的代码如下所示:

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

“抛出错误”。我们能猜出错误吗?当然是描述性的……好吧,我加上了错误。很抱歉,“抛出错误”。我们能猜出错误吗?当然是描述性的……好吧,我加上了错误。很抱歉。是的,这就是我最后要做的。谢谢。是的,这就是我最后要做的。谢谢