オブジェクトの作成(autoFac)
1949 ワード
まずはプロジェクトに
autofac
IOCフレームワークを設置する必要がありますusing Autofac;
using Xunit;
namespace createObject.Test
{
public class createObject
{
//define a interface
interface ISpeek { }
//a class to realize interface of ISpeek
public class Duck : ISpeek { }
interface ICalulator
{
int Add(int left, int right);
}
class AddNum : ICalulator
{
public int Add(int left, int right)
{
return left + right;
}
}
class Calculator
{
// dependency injection of AddNum class
readonly ICalulator cal;
public Calculator(ICalulator cal)
{
this.cal = cal;
}
public int Add(int left, int right)
{
return cal.Add(left, right);
}
}
[Fact]
public void should_create_duck_object()
{
var builder = new ContainerBuilder();
builder.Register(_ => new Duck()).As();
IContainer build = builder.Build();
var duck = build.Resolve();
Assert.Equal(typeof(Duck), duck.GetType());
}
[Fact]
public void should_create_calculate_object()
{
//tells to how to create object
var builder = new ContainerBuilder();
builder.Register(_ => new AddNum()).As();
builder.Register(c => new Calculator(c.Resolve()));
// create build container
IContainer build = builder.Build();
// create Duck using Resolve
var calculate = build.Resolve();
Assert.Equal(5, calculate.Add(2, 3));
}
}
}