关于Caliburn.Micro框架的IOC类的GetInstance的实现问题

玉行天下 2019-01-31 05:03:58
我最近遇到Caliburn.Micro的IOC时,想查看一下源代码。遇到如下代码并不是很明白
public static class IoC {

public static Func<Type, string, object> GetInstance = (service, key) => { throw new InvalidOperationException("IoC is not initialized."); };


public static Func<Type, IEnumerable<object>> GetAllInstances = service => { throw new InvalidOperationException("IoC is not initialized."); };

public static Action<object> BuildUp = instance => { throw new InvalidOperationException("IoC is not initialized."); };

public static T Get<T>(string key = null) {
return (T)GetInstance(typeof(T), key);
}

}
这里的get方法用来获取类的实例,而get方法调用了GetInstance方法,但是GetInstance方法使用了匿名函数和Lambda 表达式初始化了。然后这个GetInstance其实会在一个BootstrapperBase类里面进行赋值,并且是虚函数,可以自己重写。我的问题就是,就算可以自定义或者必须自定义这个GetInstance函数,这里的匿名函数也会执行,抛出错误。我不明白,这个匿名函数如何在初始化后,不执行的?求指导啊。
...全文
126 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧