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

网站建设与管理培训总结网络推广收费价目表

网站建设与管理培训总结,网络推广收费价目表,中国做外贸网站,义乌万物网络科技 网站建设Prism 提供了更多的注册方式,适应不同的需求和场景。下面我会全面列出 IContainerRegistry 提供的所有常见注册方式,并附带相应的示例。1. 注册单例(Singleton) 注册单例类型服务,整个应用生命周期内只会创建一个实例&…
Prism 提供了更多的注册方式,适应不同的需求和场景。下面我会全面列出 IContainerRegistry 提供的所有常见注册方式,并附带相应的示例。1. 注册单例(Singleton)
注册单例类型服务,整个应用生命周期内只会创建一个实例,所有引用共享同一个实例。public class MyService { }public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.RegisterSingleton<MyService>();
}
或者指定接口与实现:public interface IMyService { }
public class MyService : IMyService { }public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.RegisterSingleton<IMyService, MyService>();
}
2. 注册瞬态(Transient)
每次请求都会创建新的实例,适用于不需要共享状态的服务。public class MyService { }public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<MyService>();
}
或者注册接口与实现:public interface IMyService { }
public class MyService : IMyService { }public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<IMyService, MyService>();
}
3. 注册实例(Instance)
注册一个已经存在的实例,容器将直接使用该实例而不是创建新实例。public class MyService { }public void RegisterTypes(IContainerRegistry containerRegistry)
{var instance = new MyService();containerRegistry.RegisterInstance<IMyService>(instance);
}
或者使用已存在的实例:public class MyService { }var instance = new MyService();
containerRegistry.RegisterInstance<IMyService>(instance);
4. 注册带参数的服务
如果服务构造函数需要额外的参数,可以使用 lambda 表达式来提供这些参数。public class MyService
{private readonly string _message;public MyService(string message){_message = message;}public string GetMessage() => _message;
}public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<MyService>(c => new MyService("Hello, Prism!"));
}
5. 注册视图与视图模型(View & ViewModel)
Prism 提供了 RegisterForNavigation 方法来注册视图,并使用 Register 注册视图模型。注册视图:public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.RegisterForNavigation<MyView>();
}
注册视图模型:public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<MyViewModel>();
}
Prism 还支持通过 RegisterForNavigation 为视图配置参数:public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.RegisterForNavigation<MyView, MyViewModel>("MyView");
}
6. 注册命令(DelegateCommand)
DelegateCommand 用于创建 UI 命令。可以使用 Register 来注册 DelegateCommand。public class MyViewModel
{public DelegateCommand MyCommand { get; private set; }public MyViewModel(){MyCommand = new DelegateCommand(ExecuteCommand);}private void ExecuteCommand(){// Command logic}
}public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<DelegateCommand>();
}
7. 注册事件聚合器(Event Aggregator)
IEventAggregator 用于在组件之间发送和接收事件。你可以将其注册为单例。public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.RegisterSingleton<IEventAggregator, EventAggregator>();
}
8. 注册工厂(Factory)
使用工厂模式注册对象。通常通过工厂方法来动态创建对象。public class MyService { }public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<MyService>(c => new MyService());
}
9. 注册泛型类型
可以注册泛型类型,这对于在应用中依赖泛型类的情况非常有用。public class MyService<T> { }public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<MyService<int>>();
}
10. 注册类型别名
如果希望为一个类型提供别名,可以使用 Register 方法。public class MyService { }public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<MyService>("MyServiceAlias");
}
在解析时,可以使用别名来获取服务:var service = container.Resolve<MyService>("MyServiceAlias");
11. 注册已配置的服务
如果需要在容器中注册一个服务并且该服务需要其他配置(例如在构造时传入参数或者使用特定配置),可以使用 Register 配合 lambda 来进行注册。public class MyService
{private readonly string _config;public MyService(string config){_config = config;}
}public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<MyService>(c => new MyService("Configured"));
}
12. 注册包含生命周期管理的服务
你可以在注册时指定服务的生命周期。通常会使用瞬态(Transient)、单例(Singleton)、或作用域(Scoped)来管理对象的生命周期。public void RegisterTypes(IContainerRegistry containerRegistry)
{// 注册为瞬态服务containerRegistry.Register<MyService>();// 注册为单例服务containerRegistry.RegisterSingleton<IMyService, MyService>();// 注册为作用域服务(适用于 Web 或更复杂的场景)containerRegistry.RegisterScoped<IMyService, MyService>();
}
13. 注册装饰器(Decorator)
Prism 允许你使用装饰器模式来包装服务,从而增加额外的功能或行为。你可以将一个服务注册为另一个服务的装饰器。public interface IMyService
{void Execute();
}public class MyService : IMyService
{public void Execute(){// Service execution logic}
}public class MyServiceDecorator : IMyService
{private readonly IMyService _inner;public MyServiceDecorator(IMyService inner){_inner = inner;}public void Execute(){// Pre-processing logic_inner.Execute();// Post-processing logic}
}public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.Register<IMyService, MyService>();containerRegistry.RegisterDecorator<IMyService, MyServiceDecorator>();
}
14. 注册异步服务
使用 RegisterAsync 来注册异步加载的服务。这个特性在某些需要延迟加载的情况下非常有用。public class MyService
{public async Task InitializeAsync(){// Async initialization logic}
}public void RegisterTypes(IContainerRegistry containerRegistry)
{containerRegistry.RegisterAsync<MyService>(async c =>{var service = new MyService();await service.InitializeAsync();return service;});
}

总结
通过 Prism 的 IContainerRegistry,你可以灵活地注册不同生命周期、参数化、泛型、装饰器等各种类型的服务。上述是最常见的几种注册方式,适用于不同的应用场景。通过这些注册方式,能够实现灵活且高效的依赖注入,帮助你更好地构建模块化和可维护的 WPF 应用。

http://www.hkea.cn/news/966725/

相关文章:

  • 做线上网站需要钱吗互联网营销推广
  • 找个美工做淘宝网站需要多少钱南昌seo方案
  • 网站用户登录流程图外贸高端网站设计公司
  • 做搜狗手机网站优化软代写
  • wordpress页面背景颜色win7优化设置
  • 做分类信息网站代码百度搜索推广优化师工作内容
  • 南京网站开发公司关键词推广
  • 合水口网站建设百度指数明星人气榜
  • 上传网站图片处理推广软件免费
  • 做网站怎么写代码下载百度软件
  • 县城做网站网站搭建关键词排名
  • b2b多平台一键发布seo需要掌握哪些技术
  • 网站建设推广合同网络广告联盟
  • 汽车网站正在建设中模板什么是营销模式
  • 宜昌seo百度seo优化
  • 做网站公司q房网seo快速排名站外流量推广
  • 南宁网站排名优化广州发布紧急通知
  • 网站建设的策划方案seo排名
  • 网站模板绑定域名培训班
  • coupang入驻条件2022台州关键词优化报价
  • 网站建设前景怎么样google优化师
  • 上海免费网站建设淘宝引流推广怎么做
  • 单位网站建设目的西安网站建设公司排行榜
  • 福州制作网站软件无人在线观看高清视频单曲直播
  • 建设银行卡网站百度账号登录个人中心
  • 网站显示500错误怎么解决方法seo网站推广排名
  • 广告免费设计在线生成网站排名优化
  • 余姚公司网站建设怎么建网址
  • 网站域名授权怎么做市场营销案例100例
  • kindeditor代码高亮 wordpressseo优化排名经验