首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏哲学驱动设计

    WPF中ICommand接口 的一个设计问题

    public interface ICommand { // Summary: // Occurs when changes occur that ICommand Command { get; } object CommandParameter { get; } IInputElement CommandTarget 按照MSDN中的解释,当CanExecuteChanged事件发生时,ICommandSource会调用ICommand的CanExecute方法来检测是否可以执行命令。 (WPF) commanding system, the CommandTarget property on a ICommandSource is only applicable when the ICommand

    1.2K70发布于 2018-01-29
  • 来自专栏yl 成长笔记

    用命令模式实现撤销与恢复 命令模式定义撤销与重做功能就此实现。整个过程中,最关键部分是命令对象的封装以及控制类与具体工厂类耦合的解除。

    通过 ICommand 接口,实现了控制类与调用者的解耦。 * 下面通过一个简单的实例来详细说明这种解耦以恢复撤销是如何实现。 控制类 (对应类图中 Control) public class Control { List<ICommand> onCommands; Stack<ICommand> undoCommands ; Stack<ICommand> redoCommands; // 记录前一个命令, 便于 undo public Control() { onCommands = new List<ICommand>(); undoCommands = new Stack<ICommand>(); redoCommands = new Stack <ICommand>(); } public void SetCommand(int slot, ICommand onCmd) { onCommands[slot

    1.9K20发布于 2019-03-29
  • 来自专栏挖坑填坑

    设计模式- 装饰器模式(Decorator Pattern)

    C#例子 public interface ICommand { void Executed(); } public class CreateOrder : ICommand { public void Executed() { Console.WriteLine("创建了订单信息!") ; } } public class WriteLogDecorator : ICommand { private ICommand _command private ICommand _command; public PayDecorator(ICommand command) { _command ; } } public class StockDecorator : ICommand { private ICommand _command;

    41820发布于 2019-05-13
  • 来自专栏草根专栏

    使用 C# (.NET Core) 实现命令设计模式 (Command Pattern)

    onCommands = new ICommand[7]; offCommands = new ICommand[7]; var noCommand = 可以在ICommand接口里面添加一个undo()方法, 然后在里面执行上一次动作相反的动作即可: namespace CommandPattern.Abstractions { public [] onCommands; private ICommand[] offCommands; private ICommand undoCommand; = new ICommand[7]; var noCommand = new NoCommand(); for (int i = 0; i < 7; { private ICommand[] commands; public MacroCommand(ICommand[] commands)

    1.4K80发布于 2018-04-16
  • 来自专栏悟空聊架构 | 公众号

    03.如何实现一个遥控器-命令模式

    [] onCommands; ICommand[] offCommands; public RemoteControl() { onCommands = new ICommand[7]; offCommands = new ICommand[7]; ICommand noCommand [] onCommands; ICommand[] offCommands; ICommand undoCommand; offCommands = new ICommand[7]; ICommand noCommand = new NoCommand(); ICommand[] _commands; public MacroCommand(ICommand[] commands)

    1.2K70发布于 2018-05-18
  • 来自专栏dino.c的专栏

    [UWP 自定义控件]了解模板化控件(7):支持Command

    readonly DependencyProperty CommandProperty = DependencyProperty.Register("Command", typeof(ICommand , DependencyPropertyChangedEventArgs args) { MenuItem target = obj as MenuItem; ICommand oldValue = (ICommand)args.OldValue; ICommand newValue = (ICommand)args.NewValue; if RoutedEventHandler Click; ///

    /// 获取或设置Command的值 /// public ICommand oldValue, ICommand newValue) { if (oldValue !

    71430发布于 2019-01-18
  • 来自专栏小黎子数据分析

    WPF自学入门(十一)WPF MVVM模式Command命令

    在WPF中使用命令的步骤很简单 1.创建命令 2.绑定命令 3.设置命令源 4.设置命令目标 WPF中命令的核心是System.Windows.Input.ICommand接口,所有命令对象都实现了此接口 当创建自己的命令时,不能直接实现ICommand接口,而是要使用System.Windows.Input.RouteCommand类,该类已经实现了ICommand接口,所有WPF命令都是RouteCommand WPF提供了一个很好的方式来解决事件绑定的问题--ICommand。很多控件都有Command属性,如果没有,我们可以将命令绑定到触发器上。接下来我们来先实现一个ICommand接口。 ICommand需要用户定义两个方法bool CanExecute和void Execute。第一个方法可以让我们来判断是否可以执行这个命令,第二个方法就是我们具体的命令。 ******************/ 42 43 namespace Example3 44 45 { 46 47 public class RelayCommand : ICommand

    4K22发布于 2019-08-26
  • 来自专栏.Net Core技术分享

    手撸一套纯粹的CQRS实现

    首先定义ICommand接口,该接口不含任何方法和属性,仅作为标记来使用。 public interface ICommand { } 与Command对应的有一个CommandHandler,Handler中定义了具体的操作。 public interface ICommandHandler<TCommand> where TCommand : ICommand { void Execute(TCommand 定义如下: public interface ICommandBus { void Send<T>(T command) where T : ICommand; } ICommandBus的实现 { this.handlerFactory = handlerFactory; } public void Send<T>(T command) where T : ICommand

    82610发布于 2019-09-24
  • 来自专栏草根专栏

    使用C# (.NET Core) 实现命令设计模式 (Command Pattern)

    onCommands = new ICommand[7]; offCommands = new ICommand[7]; var noCommand = 可以在ICommand接口里面添加一个undo()方法, 然后在里面执行上一次动作相反的动作即可: namespace CommandPattern.Abstractions { public [] onCommands; private ICommand[] offCommands; private ICommand undoCommand; = new ICommand[7]; var noCommand = new NoCommand(); for (int i = 0; i < 7; { private ICommand[] commands; public MacroCommand(ICommand[] commands)

    74420编辑于 2022-05-10
  • 来自专栏张志敏的技术专栏

    设计模式之命令模式

    实现 public interface ICommand { void Execute(); } public class Receiver { public void Action() { Console.WriteLine("Receiver Action."); } } public class ConcreteCommand : ICommand _receiver.Action(); } } public class Invoker { private readonly IList<ICommand> _commandHistory = new List<ICommand>(); public void InvokeCommand(ICommand command) { command.Execute(); Main(string[] args) { var invoker = new Invoker(); var receiver = new Receiver(); ICommand

    37720发布于 2020-08-10
  • 来自专栏软件工程师Michael

    设计模式--命令模式

    下面是一个使用 C# 实现的命令模式示例: using System; // 定义命令接口 public interface ICommand { void Execute(); } // 具体命令类A public class ConcreteCommandA : ICommand { private Receiver receiver; public ConcreteCommandA command; // 设置命令 public void SetCommand(ICommand command) { this.command = command 接口定义了命令执行的方法Execute(),ConcreteCommandA和ConcreteCommandB是两个具体的命令类,它们继承或实现了ICommand接口,并实现了命令执行的具体操作。 Invoker类是调用者类,它包含了一个ICommand接口类型的成员变量,可以接收不同的具体命令对象。当需要执行操作时,调用ExecuteCommand()方法,实现对命令的调用执行。

    46060编辑于 2023-07-18
  • 来自专栏生如夏花的个人博客

    工厂设计模式

    command.command(); } } //抽象连接方法 interface IConnection{ void connect(); } //抽象命令方法 interface ICommand { void command(); } //抽象数据库工具接口 interface IDatabaseUtils{ IConnection getConnection(); ICommand () { System.out.println("mysql发送命令"); } } //oracle发生命令对象 class OracleCommand implements ICommand IConnection getConnection() { return new MysqlConnection(); } @Override public ICommand { void command(); } //抽象数据库工具接口 interface IDatabaseUtils{ IConnection getConnection(); ICommand

    59620发布于 2020-11-26
  • 来自专栏DotNet NB && CloudNative

    告别MediatR:构建极简CQRS架构的终极指南

    我们将涵盖: • 定义ICommand、IQuery及处理器契约 • 添加装饰器支持(日志、验证等) • 通过DI完成注册 • 实际场景的完整示例 命令、查询与处理器 首先定义命令和查询的基础契约: / / ICommand.cs public interface ICommand; public interface ICommand<TResponse>; // IQuery.cs public interface IQuery<TResponse>; 这些标记接口让我们能够围绕操作意图构建应用逻辑——写操作通过ICommand,读操作通过IQuery。 处理器接口遵循相同模式: // ICommandHandler.cs publicinterfaceICommandHandler<inTCommand> whereTCommand : ICommand 标记待办事项为完成"命令来演示这些抽象: // CompleteTodoCommand.cs public sealed record CompleteTodoCommand(Guid TodoItemId) : ICommand

    54600编辑于 2025-07-24
  • 来自专栏设计模式

    命令模式详解

    } public void Off() { Console.WriteLine("Light is OFF"); } } // 命令接口 interface ICommand { void Execute(); void Undo(); } // 具体命令:打开灯 class LightOnCommand : ICommand { private ); } public void Undo() { light.Off(); } } // 具体命令:关闭灯 class LightOffCommand : ICommand command; private Stack<ICommand> history = new Stack<ICommand>(); public void SetCommand(ICommand lightOn = new LightOnCommand(light); ICommand lightOff = new LightOffCommand(light);

    43210编辑于 2024-12-20
  • 来自专栏熊二哥

    Spring.NET的AOP怎么玩

    advised method returned " + returnValue); 8 return returnValue; 9 } 10 } 11 12 public interface ICommand 13 { 14 object Execute(object context); 15 } 16 17 public class ServiceCommand : ICommand 18 { 19 public new ProxyFactory(new ServiceCommand()); 30 factory.AddAdvice(new ConsoleLoggingAroundAdvice()); 31 ICommand command = (ICommand)factory.GetProxy(); 32 command.Execute("This is the argument"); 33 //ICommand command = (ICommand)ctx["myServiceObject"]; 34 //command.Execute("This is the argument"); 35 } Using Pointcuts

    95050发布于 2018-01-24
  • 来自专栏C#开发点点滴滴

    .net core 插件式开发

    针对接口开发插件/增加默认实现 3,根据需要,在运行时执行相应的逻辑 4,在动态载入dll时谨防内存泄漏 代码 1,定义接口 在单独的类库中定义针对插拔点的接口 public interface ICommand 将接口定义的方法和属性做相关的实现,如下 public class Class1 : ICommand { public string Name => "Classb" libraryPath); } return IntPtr.Zero; } public static List<ICommand (type) as ICommand; if (result ! var i = 0; while (true) { List<ICommand

    1.5K20发布于 2020-12-11
  • 来自专栏hbbliyong

    WPF命令(Command)介绍、命令和数据绑定集成应用

    的接口,代码如下: public interface ICommand { event EventHandler CanExecuteChanged; bool CanExecute(object 要定义一个新命令,可以实现ICommand接口。 如希望ICommand在被调用后关闭应用程序,代码如下: public class Exit : ICommand { event EventHandler CanExecuteChanged; public ExitCommand = new Exit(); 这样做的好处是,通过这个类型为ICommand的字段,可以让Exit命令的实现完全私有化。 对应命令本身,由于希望某些条目用OpenCommand,而其他条目用BlockedCommand,所以将使用IValueConvert把文件名转换为ICommand,代码如下: <ListBox Margin

    7K40发布于 2018-03-05
  • 来自专栏架构师高级俱乐部

    使用插件创建 .NET Core 应用程序

    { public interface ICommand { string Name { get; } string Description { get; } int Execute(); } } 此 ICommand 接口是所有插件将实现的接口。 由于已定义 ICommand 接口,所以应用程序项目可以填写更多内容。 ).IsAssignableFrom(type)) { ICommand result = Activator.CreateInstance(type) as ICommand ICommand 接口。

    2.1K20编辑于 2022-04-27
  • 来自专栏Niuery的技术日记

    WPF --- 非Button自定义控件实现点击功能

    ), typeof(OpenFolderBrowserControl), new UIPropertyMetadata(null)) public ICommand Command { Invoke(e.Source, e); //调用Command ICommand command = Command; object parameter 测试 准备测试窗体和 ViewModel,这里为了不引入依赖包,也算是复习一下 「MVVM」 的实现,就手动实现 ICommand 和 INotifyPropertyChanged。 「ICommand」 实现: public class RelayCommand : ICommand { private readonly Action? clickCommand = null; ///

    /// 点击事件 /// public ICommand ClickCommand

    1.1K10编辑于 2023-10-22
  • 来自专栏GreenLeaves

    C# Command命令(行为型模式)+队列 实现事务,带异步命令重试机制和生命周期

    return true; } } ///

    /// 命令约束 /// public interface ICommand /// /// 文档操作命令对象 /// public class DocumentCommand : Command<Guid>,ICommand summary> /// 命令管理器 /// public class CommandManager { public Queue<ICommand > Commands = new Queue<ICommand>(); public Queue<ICommand> UndoCommands = new Queue<ICommand >(); public Queue<ICommand> SuccessCommands = new Queue<ICommand>(); ///

    1.2K10发布于 2019-01-03
领券