手动实现简单的依赖注入容器,管理对象的创建和生命周期。
public interface ILogger { void Log(string message); } public class ConsoleLogger : ILogger { public void Log(string message) => Console.WriteLine($"日志: {message}"); } public class DIContainer { private readonly Dictionary<Type, Type> _typeMap = new Dictionary<Type, Type>(); // 注册类型映射 public void Register<TInterface, TImplementation>() where TImplementation : TInterface { _typeMap[typeof(TInterface)] = typeof(TImplementation); } // 解析对象 public T Resolve<T>() { Type interfaceType = typeof(T); if (!_typeMap.TryGetValue(interfaceType, out var implType)) { throw new InvalidOperationException("未注册的类型"); } return (T)Activator.CreateInstance(implType); } } // 调用示例 public static void TestDI() { var container = new DIContainer(); container.Register<ILogger, ConsoleLogger>(); ILogger logger = container.Resolve<ILogger>(); logger.Log("依赖注入测试"); }