以下是一个使用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"。