IUserRepository,实现代码在哪里?

时间:2014-10-16 00:38:04

标签: c# .net simple-injector

我试图实现SimpleInjector以使用Dependency Injector,但网站上的例子使用IUserRepository接口,但没有关于它来自何处的信息。

可以帮助我了解实施的位置。

protected void Application_Start(object sender, EventArgs e)
{
    // Create the container as usual.
    var container = new Container();

    // Register your types, for instance:
    container.Register<IUserRepository, SqlUserRepository>();
    container.RegisterPerWcfOperation<IUnitOfWork, EfUnitOfWork>();

    // Register the container to the SimpleInjectorServiceHostFactory.
    SimpleInjectorServiceHostFactory.SetContainer(container);
}

2 个答案:

答案 0 :(得分:2)

正如约翰所说,这些只是一些例子。

假设您创建了自己的类和接口:

public interface IOrderService
{
    void CancelOrder(int orderId);
}

public class SqlOrderService : IOrderService
{
    public void CancelOrder(int orderId) { /* logic here */ }
}

你的注册类似于他们的例子,如下:

container.Register<IOrderService, SqlOrderService>();

稍后,当您请求IOrderService时(例如在另一个类的构造函数中),您实际上将获得一个具体的SqlOrderService实例。


所以他们的例子:

container.Register<IUserRepository, SqlUserRepository>();

建议他们有这样的类结构:

public interface IUserRepository
{
    ...
}

public SqlUserRepository : IUserRepository
{
    ...
}

答案 1 :(得分:1)

IUserRepository是您创建的内容(以及SqlUserRepository)。他们只是展示了他们注射的工作原理。