diff --git a/AutoFacSamles/Program.cs b/AutoFacSamles/Program.cs index c43e57a..33a7449 100644 --- a/AutoFacSamles/Program.cs +++ b/AutoFacSamles/Program.cs @@ -1,4 +1,5 @@ using Autofac; +using Autofac.Core; using System; using System.Collections.Generic; @@ -49,6 +50,20 @@ namespace AutoFacSamles } } + public class SMSLog : ILog + { + private readonly string phoneNumber; + + public SMSLog(string phoneNumber) + { + this.phoneNumber = phoneNumber; + } + public void Write(string message) + { + Console.WriteLine($"SMS to {phoneNumber} : {message}"); + } + } + public class Car { private Engine engine; @@ -79,14 +94,34 @@ namespace AutoFacSamles { var builder = new ContainerBuilder(); - // IList --> List - // IList --> List - builder.RegisterGeneric(typeof(List<>)).As(typeof(IList<>)); + // Named parameter + //builder.RegisterType() + // .As() + // .WithParameter("phoneNumber", "+173874872643"); - IContainer container = builder.Build(); + // Typed parameter + //builder.RegisterType() + // .As() + // .WithParameter(new TypedParameter(typeof(string), "+173874872643")); + + // resolved parameter + builder.RegisterType() + .As() + .WithParameter( + new ResolvedParameter( + // predicate + (pi, ctx) => pi.ParameterType == typeof(string) && pi.Name == "phoneNumber", + (pi, ctx) => "+173874872643" + ) + ); + + //Random random = new Random(); + //builder.Register((c, p) => new SMSLog(p.Named("phoneNumber"))); + + var container = builder.Build(); + var log = container.Resolve(); + log.Write("test message"); - var myList = container.Resolve>(); - Console.WriteLine(myList.GetType()); } } }