大良营销网站建设流程,灯塔seo,iis 默认网站 删除,wordpress用户登录显示请求失败目录
一、了解IOC
1、概念
2、生命周期
二、使用
三、扩展-CommunityToolkit.Mvvm工具包
Messenger信使
方式一#xff08;收发消息#xff09;
方式二#xff08;收发消息#xff09;
方式三#xff08;请求消息#xff09; 一、了解IOC
IOC#xff0c;即控制…目录
一、了解IOC
1、概念
2、生命周期
二、使用
三、扩展-CommunityToolkit.Mvvm工具包
Messenger信使
方式一收发消息
方式二收发消息
方式三请求消息 一、了解IOC
IOC即控制反转Inversion of Control它通过将对象的创建和管理责任从应用程序代码中转移到外部容器或框架中实现了对象之间的松耦合和依赖性反转。
1、概念 依赖注入Dependency Injection, DI IOC 的一种实现方式主要通过依赖注入来实现对象之间的依赖关系即在需要时将依赖的对象或依赖的工厂注入到目标对象中而不是由目标对象自己创建。DI注入三方式构造函数注入、属性注入、方法注入。 容器Container IOC 容器是负责管理和注入对象的工具或框架它可以配置、创建和组装对象同时解决对象之间的依赖关系。常见的 IOC 容器包括 Spring FrameworkJava、UnityC#、GuiceJava、DaggerAndroid等。 松耦合Loose Coupling 通过IOC对象之间的依赖关系由外部容器来管理使得对象之间的耦合度降低。这样当需要改变某个对象的依赖关系时只需调整配置而不需要修改对象本身的代码。
2、生命周期
单例Singleton
单例生命周期保证在整个应用程序生命周期内只存在一个对象实例。无论有多少个请求IOC 容器始终返回同一个实例。这种方式适合那些需要在应用程序中共享状态或资源的对象确保了对象的唯一性和共享性。 services.AddSingletonIApplicationService,ApplicationService 作用域Scoped
作用域生命周期指定对象的生命周期与特定的作用域相关联例如每个 HTTP 请求或每个事务。在每个作用域内只会创建一个对象实例并且在作用域结束时销毁。这种方式在需要限定对象生命周期到特定范围内的情况下非常有用例如在 Web 应用中处理请求时 services.AddScopedIApplicationService,ApplicationService 瞬时Transient
瞬时生命周期意味着每次请求时都会创建一个新的对象实例。这种方式适合那些无需长时间维持状态的对象每次请求都需要一个全新的、独立的对象实例。在 IOC 容器中每次解析时都会创建一个新的对象。 services.AddTransientIApplicationService,ApplicationService 二、使用
添加NuGet包Microsoft.Extensions.DependencyInjection IServiceProvider serviceProvider;ServiceCollection containernew ServiceCollection();public void RegisterServiceT, TObject()where T : classwhere TObject : class, T{container.TryAddSingletonT, TObject(); //单例//container.TryAddScopedT, TObject(); //作用域//container.TryAddTransientT, TObject(); //瞬态serviceProvider container.BuildServiceProvider();}public T GetServiceT() where T : class{return serviceProvider.GetServiceT();}
三、扩展-CommunityToolkit.Mvvm工具包
Messenger信使
用于不同界面传输数据
方式一收发消息
1、创建消息 public class MyTestMessage{public MyTestMessage(string msg){Message msg;}public string Message { get; }}
2、发布消息某界面
WeakReferenceMessenger.Default.SendMyTestMessage(new MyTestMessage(sendMsg));
3、订阅消息其它界面
WeakReferenceMessenger.Default.RegisterMyTestMessage(this, (r, m)
{//处理接收到的消息Message m.Message;
});
方式二收发消息
1、创建消息
public class MyTestMessage
{public MyTestMessage(string msg){Message msg;}public string Message { get; }
}
2、发布消息某界面
WeakReferenceMessenger.Default.SendMyTestMessage(new MyTestMessage(sendMsg));
3、订阅消息其它界面实现接口IRecipientT public class TargetViewModel:ObservableObject,IRecipientMyTestMessage{public void Receive(MyTestMessage message){//处理接收到的消息Message message.Message;}public TargetViewModel(){WeakReferenceMessenger.Default.Register(this);}private string messageInit;public string Message{get message;set SetProperty(ref message, value);}}
方式三请求消息
1、创建消息 public class MyTestMessage{public MyTestMessage(string msg){Message msg;}public string Message { get; }}public class MyRequestMessage : RequestMessageMyTestMessage{ }
2、发送请求消息某界面
MyTestMessage reply WeakReferenceMessenger.Default.SendMyRequestMessage();
MessageBox.Show(reply.Message);
3、回复消息其它界面
WeakReferenceMessenger.Default.RegisterTargetViewModel,MyRequestMessage(this, (r, m)
{//回复m.Reply(new MyTestMessage(ReplyMsg));
});