一、接口及实现类
namespace MyUnity
{
public interface IComputer
{
double GetResult(double numA, double numB);
}
public class MulOperation : IComputer
{
public double GetResult(double numA, double numB)
{
return numA - numB;
}
}
public class AddOpertaion : IComputer
{
public double GetResult(double numA, double numB)
{
return numA + numB;
}
}
}
二、配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity"
type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,
Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<alias alias="InComputer" type="MyUnity.IComputer,MyUnity" />
<alias alias="Computer" type="MyUnity.MulOperation,MyUnity" />
<container name="containerOne">
<register type="InComputer" mapTo="Computer" />
<register type="MyUnity.MyClass,MyUnity" mapTo="MyUnity.MyClass,MyUnity">
<!--<property name="computer" dependencyType="MyUnity.MulOperation,MyUnity"/>-->
<constructor>
<param name="count" value="2"/>
</constructor>
</register>
</container>
</unity>
</configuration>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System.Configuration;
namespace MyUnity
{
class Program
{
static void Main(string[] args)
{
IUnityContainer unityContainer = new UnityContainer();
unityContainer.LoadConfiguration("containerOne");
Console.WriteLine(unityContainer.Resolve<MyClass>().GetResult(2, 3));
}
}
public class MyClass
{
[Dependency] //注入属性
public IComputer computer { get; set; }
private int num;
public MyClass(int count) //构造函数注入
{
this.num = count;
}
public double GetResult(double numA, double numB)
{
return computer.GetResult(numA + num, numB);
}
}
}