草庐IT

Decorator

全部标签

c# - 如何使用方法参数属性

我一直在努力寻找如何编写自定义属性来验证方法参数的示例,即转换为以下形式:publicvoidDoSomething(Clientclient){if(client.HasAction("do_something")){//...}else{thrownewRequiredActionException(client,"do_something");}}进入这个:publicvoidDoSomething([RequiredAction(Action="some_action")]Clientclient){//...}据我所知,我需要将此属性添加到我的自定义属性中,但我不知道如何访问

c# - 具有许多属性的类的装饰器模式

我有这个简单的类:publicclassDataBag{publicstringUserControl{get;set;}publicstringLoadMethod{get;set;}publicdynamicParams{get;set;}publicintHeight{get;set;}publicDataBag(stringControl,objectvars,stringlm){UserControl=Control;LoadMethod=lm;Params=vars;Height=0;}}然后我想为它创建一个装饰器,它会添加一堆它自己的属性。问题是提供对装饰属性的访问的最简

C#:包装方法调用的优雅方式

为相当含糊的标题道歉,但我想要实现的目标可能在代码中有更好的说明。我有一个WCF客户端。当我调用方法时,我想将每个调用包装在一些错误处理代码中。因此,我没有直接公开这些方法,而是在客户端类上创建了以下辅助函数:publicTHandleServiceCall(FuncserviceMethod){try{returnserviceMethod(decorator);}[...]}客户端代码是这样使用它的:service.HandleServiceCall(channel=>channel.Ping("Hello"));并且对Ping的调用被很好地包裹在一些将尝试处理任何错误的逻辑中。除

c# - 装饰者模式的实现

尝试从“HeadFirstDesignPatterns”一书中的代码(用Java编写)在C#中实现装饰器模式。我刚开始使用C#,因此对语法还是陌生的,所以我不确定为什么我不能让下面的注释代码行工作。这是装饰器模式中的第一个抽象基类及其派生类:usingSystem;publicabstractclassBeverage{privateStringm_description;//getadescriptionofthebeveragepublicvirtualStringDescription{get{returnm_description;}}//calculatecostoftheb

c# - 在 autofac 中注册装饰器,无需手动指定所有依赖项

我有一个装饰器,它有一些其他的依赖项,这些依赖项也应该使用容器来解决。示例:publicclassFooDecorator:IFoo{publicFooDecorator(IFooinner,IBarbar,IBazbaz)}我可以这样注册:builder.RegisterType().As();builder.RegisterDecorator((c,inner)=>newFooDecorator(inner,c.Resolve(),c.Resolve()),"key");这是有效的,但不是很好,我必须手动指定所有其他依赖项。我想做的是:builder.RegisterDecorat

c# - 如何在 wpf 中的文本绑定(bind)前面添加项目符号?

为简单起见,我有以下缩写如何才能让我的TextBox在绑定(bind)到它的文本前面显示一个项目符号点?所需格式:列出第1项列出第2项 最佳答案 您可以使用BulletDecorator与文本block。示例: 关于c#-如何在wpf中的文本绑定(bind)前面添加项目符号?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/26258450/

c# - 装饰器和 IDisposable

我有一个DbContext的子类publicclassMyContext:DbContext{}我有一个围绕MyContext的IUnitOfWork抽象,它实现了IDisposable以确保像MyContext这样的引用是在适当的时候处理掉publicinterfaceIUnitOfWork:IDisposable{}publicclassUnitOfWork:IUnitOfWork{privatereadonlyMyContext_context;publicUnitOfWork(){_context=newMyContext();}~UnitOfWork(){Dispose(fa

javascript - 如何在 React Redux 应用程序中使用装饰器?

我正在使用ReactRedux创建简单的应用程序。我想使用装饰器在我的组件中注入(inject)一些方法。我在其他项目中看到类似的代码:importReact,{Component}from'react';import{connect}from'react-redux';@creatableexportdefaultclassBookDetailsextendsComponent{render(){console.log(this.props);if(!this.props.Activebook){returnpleaseselectbook}return({this.props.Ac

javascript - 如何扩展/覆盖 Angular Material $mdDialog.show 中的默认选项?

TL;DR:我需要一种方法来使用提供程序(与任何其他Angular模块-arandomexample一样)覆盖提供我的AngularMaterial(尤其是在Material对话框上)的默认选项。我一直在寻找一种自定义默认值的方法optionsAngularMaterialModal但没有任何可用的结果。就像我在其他插件/模块上使用的那样,这种方式可以使用provider来实现。查看Material的核心(1.0.8),我尝试使用这样的setDefaults方法设置选项(假设我只想暂时禁用背景):app.config(['$mdDialogProvider',function($mdD

php - 在 php 中使用 Decorator 的完整继承行为

我一般不太习惯设计pattern,也没用过Decorator。我想要一个可以根据上下文具有不同行为的对象。这些行为在不同的类中定义。我想装饰器可以解决问题。但我需要每个装饰器都可以访问相同的属性,并首先调用子方法,就像继承一样。所以这是我所做的:abstractclassComponent{/***UsedtoaccesslastchainDecorator**@varDecorator*/protected$this;protected$prop1;//Theseproperieshavetobeaccessedinanydecoratorsprotected$prop2;prote