c#的IOC怎么理解?

舌尖上的中国001 2020-08-25 12:10:16
是unity开发,领导要求用StrangeIOC 。是IOC的一种,看到我是一头雾水。代码风格转化、通过枚举发送事件,逻辑的划分、各种绑定,学了一个星期,头都炸了还是不能理解
在百度上看的IOC也是一知半解,
我这种情况是不是不适合这条路啊?关于IOC的该怎么快速的理解和适配它的编码风格
...全文
10988 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-08-26
  • 打赏
  • 举报
回复
引用 9 楼 舌尖上的中国001 的回复:
在示例中。Services是网络相关。models是数据模型。vive和controller是类似MVC中的VC。中间加了一层MeDiator。controller有和models 、Services去交互。
services 是网络相关? 那你的图中,他为何直接与Model交互的? 我看下来,首先 view-controller-services-model。 这条线就比较清晰了。 其次 web - service - model 这条线看起来更像是,,webapi-service-model。 所以我认为 services就是你的业务逻辑层。 至于里面有没有在细分bll,dal 那是另一回事了。
  • 打赏
  • 举报
回复
在示例中。Services是网络相关。models是数据模型。vive和controller是类似MVC中的VC。中间加了一层MeDiator。controller有和models 、Services去交互。
正怒月神 2020-08-25
  • 打赏
  • 举报
回复
引用 4 楼 舌尖上的中国001 的回复:
[quote=引用 3 楼 正怒月神 的回复:]而你要做的,只是根据框架的要求, 来实现此框架规定的注入方式。
我按照IOC的示例去放逻辑,总是感觉很怪。不知道是不是我理解不到位。 比如它注入一个类,我找不到他是在哪里实例化的。 还有,有的代码不知道该怎么放。我找不到它是属于下面的那一层,我也不想破坏它这个钟结构 [/quote] 容器帮你管理的,不需要你自己实例化,这是无感知的。 代码的话,你业务逻辑应该放在services这一层相关的类里。
遇见女神 2020-08-25
  • 打赏
  • 举报
回复
看示例代码就是了
wanghui0380 2020-08-25
  • 打赏
  • 举报
回复
不用理解,所以无论何种IOC方案都有个容器,IOC只是让容器去管理实例,你不用纠结他在那里new的,因为使用IOC的目的就是解耦,让你不用关心在那里new。 现在你的问题,到底怎么用,你也贴了个图。 我们说无法回答,不同的IOC方案,使用不同的规则。这就好比日志系统,虽然所有的日志都有基本类似手段,但是每个日志有自己的规则,比如log4net,Nlog都是日志,但他们每个都自己的配置和规则。我们无法回答,只能说你用的什么IOC,就看什么IOC的规则
晨易夕 2020-08-25
  • 打赏
  • 举报
回复
你都用IoC了,你管它怎么实例化的,在哪里实例化的。你应该关注的是获取实例的生命周期,注入方式等。 至于你的代码应该符合那种形式的内聚,放在哪个模块中,应该是你需要掌握的设计基本功底。
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
而你要做的,只是根据框架的要求, 来实现此框架规定的注入方式。
我按照IOC的示例去放逻辑,总是感觉很怪。不知道是不是我理解不到位。 比如它注入一个类,我找不到他是在哪里实例化的。 还有,有的代码不知道该怎么放。我找不到它是属于下面的那一层,我也不想破坏它这个钟结构
正怒月神 2020-08-25
  • 打赏
  • 举报
回复
而你要做的,只是根据框架的要求, 来实现此框架规定的注入方式。
正怒月神 2020-08-25
  • 打赏
  • 举报
回复 3
先了解IOC的含义。 也就是控制反转。 那做的事情,其实说白了,就是有一个容器,帮你进行对象的实例化。 不需要你 A a=new A(); 这些都有容器帮你做了。 意义就是解耦代码。 至于各种框架的运用,万变不离其中, 还是那句话,他们是靠容器来帮你实例化对象,达到解耦目的。 至于如何达到这个目的,是通过xml配置文件,还是注解注入,或者代码编写的等等等等。 都只是实现IOC的手段。 目前比较主流的几个手段, 1 注解注入 2 属性注入 3 构造注入 当然也有上面提到的,xml配置文件注入,代码注入等等。
  • 打赏
  • 举报
回复
上去

110,539

社区成员

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

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

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