59 lines
1.3 KiB
C#
59 lines
1.3 KiB
C#
using Autofac;
|
|
using System;
|
|
|
|
namespace AutoFacSamples2
|
|
{
|
|
public class Parent
|
|
{
|
|
public override string ToString()
|
|
{
|
|
return "I am your father";
|
|
}
|
|
}
|
|
|
|
public class Child
|
|
{
|
|
public string Name { get; set; }
|
|
public Parent Parent { get; set; }
|
|
|
|
public void SetParent(Parent parent)
|
|
{
|
|
Parent = parent;
|
|
}
|
|
}
|
|
|
|
|
|
internal class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
var builder = new ContainerBuilder();
|
|
builder.RegisterType<Parent>();
|
|
|
|
//1/builder.RegisterType<Child>().PropertiesAutowired();
|
|
|
|
//2/builder.RegisterType<Child>()
|
|
//2/ .WithProperty("Parent", new Parent());
|
|
|
|
//3/builder.Register(c =>
|
|
//3/{
|
|
//3/ var child = new Child();
|
|
//3/ child.SetParent(c.Resolve<Parent>());
|
|
//3/ return child;
|
|
//3/});
|
|
|
|
builder.RegisterType<Child>()
|
|
.OnActivated(e =>
|
|
{
|
|
var p = e.Context.Resolve<Parent>();
|
|
e.Instance.SetParent(p);
|
|
});
|
|
|
|
|
|
var container = builder.Build();
|
|
var parent = container.Resolve<Child>().Parent;
|
|
Console.WriteLine(parent);
|
|
}
|
|
}
|
|
}
|