以下是一个使用Autofac注册显式通用接口的示例代码:
using System;
using Autofac;
public interface IRepository
{
void Add(T item);
}
public class Repository : IRepository
{
public void Add(T item)
{
Console.WriteLine($"Adding {item} to the repository");
}
}
public class MyClass
{
private readonly IRepository _repository;
public MyClass(IRepository repository)
{
_repository = repository;
}
public void DoSomething()
{
_repository.Add("Hello World");
}
}
public class Program
{
public static void Main(string[] args)
{
var builder = new ContainerBuilder();
// 注册显式的通用接口
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>));
builder.RegisterType();
var container = builder.Build();
var myClass = container.Resolve();
myClass.DoSomething();
}
}
在这个示例中,我们定义了一个IRepository
接口和一个Repository
实现。MyClass
依赖于IRepository
接口。我们使用builder.RegisterGeneric
方法将Repository
注册为IRepository
的实现。然后,我们使用builder.RegisterType
注册MyClass
。
最后,我们使用container.Resolve
方法从容器中解析MyClass
实例,并调用DoSomething
方法。
当运行这个示例时,输出应该是"Adding Hello World to the repository"。