您的位置:首页 > 移动开发 > Unity3D

Unity Application Block 学习笔记 之 BuildUp方法

2013-01-25 17:41 543 查看

1、不使用BuildUp方法

class Program

{

static void Main(string[] args)

{

IUnityContainer container = new UnityContainer();

Fighter you = new Fighter();

you.AK47.Fire(); //抛出异常,AK47属性为null

Console.Read();

}

}

public class Gun

{

public void Fire()

{

Console.WriteLine("砰砰砰");

}

}

public class Fighter

{

public Gun AK47 { get; set; }

}

2、使用Dependency+BuildUp
class Program

{

static void Main(string[] args)

{

IUnityContainer container = new UnityContainer();

container.RegisterType<Fighter>();

Fighter you = new Fighter();

container.BuildUp(you);

you.AK47.Fire(); //"砰砰砰

Console.Read();

}

}

public class Gun

{

public void Fire()

{

Console.WriteLine("砰砰砰");

}

}

public class Fighter

{
[Dependency]

public Gun AK47 { get; set; }

}

3、使用Dependency很方便,但是如果Fighter类不是你写的,而是来自第三方类库,那么没有办法加此特性,需要使用运行时的属性注入InjectionProperty
class Program

{

static void Main(string[] args)

{

IUnityContainer container = new UnityContainer();

container.RegisterType<Fighter>(new InjectionProperty("AK47")); //可以接受多个InjectionProperty

Fighter you = new Fighter();

container.BuildUp(you);

you.AK47.Fire();

Console.Read();

}

}

public class Gun

{

public void Fire()

{

Console.WriteLine("砰砰砰");

}

}

public class Fighter

{

public Gun AK47 { get; set; }

}

4、结束语
如果在Fighter中定义两个属性,一个使用Dependency特性注入,另一个使用运行时注入,则使用Dependency特性注入的属性将会失败
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: