Parameters at registration time
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
using Autofac;
|
using Autofac;
|
||||||
|
using Autofac.Core;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
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
|
public class Car
|
||||||
{
|
{
|
||||||
private Engine engine;
|
private Engine engine;
|
||||||
@ -79,14 +94,34 @@ namespace AutoFacSamles
|
|||||||
{
|
{
|
||||||
var builder = new ContainerBuilder();
|
var builder = new ContainerBuilder();
|
||||||
|
|
||||||
// IList<T> --> List<T>
|
// Named parameter
|
||||||
// IList<int> --> List<int>
|
//builder.RegisterType<SMSLog>()
|
||||||
builder.RegisterGeneric(typeof(List<>)).As(typeof(IList<>));
|
// .As<ILog>()
|
||||||
|
// .WithParameter("phoneNumber", "+173874872643");
|
||||||
|
|
||||||
IContainer container = builder.Build();
|
// Typed parameter
|
||||||
|
//builder.RegisterType<SMSLog>()
|
||||||
|
// .As<ILog>()
|
||||||
|
// .WithParameter(new TypedParameter(typeof(string), "+173874872643"));
|
||||||
|
|
||||||
|
// resolved parameter
|
||||||
|
builder.RegisterType<SMSLog>()
|
||||||
|
.As<ILog>()
|
||||||
|
.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<string>("phoneNumber")));
|
||||||
|
|
||||||
|
var container = builder.Build();
|
||||||
|
var log = container.Resolve<ILog>();
|
||||||
|
log.Write("test message");
|
||||||
|
|
||||||
var myList = container.Resolve<IList<int>>();
|
|
||||||
Console.WriteLine(myList.GetType());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user