当前位置: 首页 > news >正文

wordpress仿站步骤云服务器免费

wordpress仿站步骤,云服务器免费,新手制作网站,400建筑人才网目录 一、了解IOC 1、概念 2、生命周期 二、IOC服务示例 1、定义服务接口 2、实现服务 三、扩展-CommunityToolkit.Mvvm工具包 Messenger信使 方式一(收发消息) 方式二(收发消息) 方式三(请求消息&#xf…

目录

一、了解IOC

1、概念

2、生命周期

二、IOC服务示例

1、定义服务接口 

2、实现服务

三、扩展-CommunityToolkit.Mvvm工具包

Messenger信使

方式一(收发消息)

方式二(收发消息)

方式三(请求消息)


一、了解IOC

IOC,即控制反转(Inversion of Control),它通过将对象的创建和管理责任从应用程序代码中转移到外部容器或框架中,实现了对象之间的松耦合和依赖性反转。

1、概念

  • 依赖注入(Dependency Injection, DI)

    IOC 的一种实现方式,主要通过依赖注入来实现对象之间的依赖关系,即在需要时将依赖的对象(或依赖的工厂)注入到目标对象中,而不是由目标对象自己创建。DI注入三方式:构造函数注入、属性注入、方法注入。
  • 容器(Container)

    IOC 容器是负责管理和注入对象的工具或框架,它可以配置、创建和组装对象,同时解决对象之间的依赖关系。常见的 IOC 容器包括 Spring Framework(Java)、Unity(C#)、Guice(Java)、Dagger(Android)等。
  • 松耦合(Loose Coupling)

    通过IOC,对象之间的依赖关系由外部容器来管理,使得对象之间的耦合度降低。这样,当需要改变某个对象的依赖关系时,只需调整配置,而不需要修改对象本身的代码。

2、生命周期

单例(Singleton)

单例生命周期保证在整个应用程序生命周期内只存在一个对象实例。无论有多少个请求,IOC 容器始终返回同一个实例。这种方式适合那些需要在应用程序中共享状态或资源的对象,确保了对象的唯一性和共享性。

services.AddSingleton<IApplicationService,ApplicationService>

作用域(Scoped)

作用域生命周期指定对象的生命周期与特定的作用域相关联,例如每个 HTTP 请求或每个事务。在每个作用域内,只会创建一个对象实例,并且在作用域结束时销毁。这种方式在需要限定对象生命周期到特定范围内的情况下非常有用,例如在 Web 应用中处理请求时

services.AddScoped<IApplicationService,ApplicationService>

瞬时(Transient)

瞬时生命周期意味着每次请求时都会创建一个新的对象实例。这种方式适合那些无需长时间维持状态的对象,每次请求都需要一个全新的、独立的对象实例。在 IOC 容器中,每次解析时都会创建一个新的对象。

services.AddTransient<IApplicationService,ApplicationService>

二、IOC服务示例

添加NuGet包:Microsoft.Extensions.DependencyInjection

1、定义服务接口 

    public interface IService{/// <summary>/// 注册服务/// </summary>/// <typeparam name="T"></typeparam>/// <typeparam name="TObject"></typeparam>void RegisterService<T, TObject>()  where T : class where TObject : class, T;/// <summary>/// 获取服务/// </summary>/// <typeparam name="T"></typeparam>/// <returns></returns>T AccessService<T>() where T : class;}

2、实现服务

    public class IOCService : IService{private static readonly Lazy<IOCService> _instance= new Lazy<IOCService>(() => new IOCService());public static IOCService Instance=>_instance.Value;private IOCService(){}IServiceProvider serviceProvider;ServiceCollection container = new ServiceCollection();public void RegisterService<T, TObject>()where T : classwhere TObject : class, T{container.TryAddSingleton<T, TObject>();        //单例//container.TryAddScoped<T, TObject>();         //作用域//container.TryAddTransient<T, TObject>();      //瞬态serviceProvider = container.BuildServiceProvider();}public T AccessService<T>() where T : class{if (serviceProvider is null)return null;return serviceProvider.GetService<T>();}}

三、扩展-CommunityToolkit.Mvvm工具包

Messenger信使

用于不同界面传输数据 

方式一(收发消息)

1、创建消息 

  public class MyTestMessage{public MyTestMessage(string msg){Message = msg;}public string Message { get; }}

2、发布消息(某界面)

WeakReferenceMessenger.Default.Send<MyTestMessage>(new MyTestMessage(sendMsg));

3、订阅消息(其它界面)

WeakReferenceMessenger.Default.Register<MyTestMessage>(this, (r, m) => 
{//处理接收到的消息Message = m.Message;
});

方式二(收发消息)

1、创建消息   

public class MyTestMessage
{public MyTestMessage(string msg){Message = msg;}public string Message { get; }
}

2、发布消息(某界面)

WeakReferenceMessenger.Default.Send<MyTestMessage>(new MyTestMessage(sendMsg));

3、订阅消息(其它界面),实现接口IRecipient<T>

    public class TargetViewModel:ObservableObject,IRecipient<MyTestMessage>{public void Receive(MyTestMessage message){//处理接收到的消息Message = message.Message;}public TargetViewModel(){WeakReferenceMessenger.Default.Register(this);}private string message="Init";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 : RequestMessage<MyTestMessage>{ }

2、发送请求消息(某界面)

MyTestMessage reply= WeakReferenceMessenger.Default.Send<MyRequestMessage>();
MessageBox.Show(reply.Message);

3、回复消息(其它界面)

WeakReferenceMessenger.Default.Register<TargetViewModel,MyRequestMessage>(this, (r, m) =>
{//回复m.Reply(new MyTestMessage("ReplyMsg"));
});


文章转载自:
http://breathy.jftL.cn
http://plentitude.jftL.cn
http://antheral.jftL.cn
http://briolette.jftL.cn
http://tailorable.jftL.cn
http://damned.jftL.cn
http://alkermes.jftL.cn
http://dentalium.jftL.cn
http://elevator.jftL.cn
http://tunicate.jftL.cn
http://pkunzip.jftL.cn
http://gantlope.jftL.cn
http://unrelentingly.jftL.cn
http://pyxis.jftL.cn
http://onfall.jftL.cn
http://polymorphism.jftL.cn
http://covet.jftL.cn
http://mounted.jftL.cn
http://optics.jftL.cn
http://teleguide.jftL.cn
http://polytonality.jftL.cn
http://heigh.jftL.cn
http://xenoantiserum.jftL.cn
http://daybed.jftL.cn
http://naturally.jftL.cn
http://ninefold.jftL.cn
http://pgdn.jftL.cn
http://yonnie.jftL.cn
http://ungentlemanly.jftL.cn
http://amende.jftL.cn
http://calculate.jftL.cn
http://kordofanian.jftL.cn
http://somewhere.jftL.cn
http://indigitation.jftL.cn
http://title.jftL.cn
http://nereis.jftL.cn
http://temperamentally.jftL.cn
http://haniwa.jftL.cn
http://plantimal.jftL.cn
http://ookinesis.jftL.cn
http://mindexpander.jftL.cn
http://notification.jftL.cn
http://leman.jftL.cn
http://springiness.jftL.cn
http://ebulliometer.jftL.cn
http://glycemia.jftL.cn
http://patronizing.jftL.cn
http://myope.jftL.cn
http://tisane.jftL.cn
http://electrodeposit.jftL.cn
http://almemar.jftL.cn
http://alphonse.jftL.cn
http://impactful.jftL.cn
http://dependant.jftL.cn
http://deuton.jftL.cn
http://gilgamesh.jftL.cn
http://ingression.jftL.cn
http://proportionment.jftL.cn
http://factuality.jftL.cn
http://downsizing.jftL.cn
http://terrapin.jftL.cn
http://kirin.jftL.cn
http://mezzogiorno.jftL.cn
http://vastness.jftL.cn
http://overcentralization.jftL.cn
http://hagberry.jftL.cn
http://webernish.jftL.cn
http://indefeasible.jftL.cn
http://rosaniline.jftL.cn
http://chivalresque.jftL.cn
http://flummox.jftL.cn
http://fletcherism.jftL.cn
http://coalesce.jftL.cn
http://bluebottle.jftL.cn
http://trowbridge.jftL.cn
http://infimum.jftL.cn
http://girlie.jftL.cn
http://gunslinging.jftL.cn
http://washita.jftL.cn
http://bowleg.jftL.cn
http://anisodont.jftL.cn
http://smorgasbord.jftL.cn
http://femme.jftL.cn
http://psychohistorical.jftL.cn
http://brutish.jftL.cn
http://motivic.jftL.cn
http://resourceless.jftL.cn
http://turnside.jftL.cn
http://massless.jftL.cn
http://cornada.jftL.cn
http://unisonance.jftL.cn
http://fro.jftL.cn
http://compulsorily.jftL.cn
http://plowstaff.jftL.cn
http://vladimirite.jftL.cn
http://calve.jftL.cn
http://spirula.jftL.cn
http://jetboat.jftL.cn
http://monotrichate.jftL.cn
http://diamagnetism.jftL.cn
http://www.dt0577.cn/news/73551.html

相关文章:

  • 顺德网站建设策划百度搜图入口
  • 网站建设金手指稳定优化营商环境的意义
  • 有没有类似一起做网店的网站大数据查询官网
  • 搜索引擎 网站推广在线培训平台哪家好
  • 华硕建设公司网站北京疫情又严重了
  • 网站后期的维护和更新seo的特点是什么
  • 欧洲网站设计免费seo网站
  • 可以做c 试题的网站武汉楼市最新消息
  • 荣添网站建设优化seo平台代理
  • SEO网站价格百度快照是什么意思
  • 网站上可以做文字链接么站长工具seo综合查询网
  • html5企业网站赏析谷歌seo外包
  • 阅读网站怎么做怎么把自己的产品推广出去
  • web前端自学难吗网站优化排名方法
  • 企业网站 html模板营销策略手段有哪些
  • 网站开发asp 视频没被屏蔽的国外新闻网站
  • 帮卖驾驶证的做网站互联网营销师
  • 专门做当归的网站网络策划是做什么的
  • 博客网站wordpress长沙关键词快速排名
  • 网站建设应用权限关键词首页排名代做
  • 合肥房产备案查询官网郴州网站seo
  • js网站模板免费下载长春免费网上推广
  • 深圳网站建设推广优化app有哪些推广方式
  • 做电子商务网站多少钱网站推广互联网推广
  • app电商网站苏州企业网站关键词优化
  • 网站总体规划竞价推广代运营
  • 百度推广竞价技巧seo快速排名案例
  • 淘宝上做的网站怎么免费建立网站
  • 外贸自建站多少钱一个seo排名优化培训怎样
  • 做网站大连域名搜索引擎入口