WEB开发网
开发学院软件开发C语言 实用模式:内部域特定语言 阅读

实用模式:内部域特定语言

 2010-09-30 22:42:30 来源:WEB开发网   
核心提示: 在许多 Fluent 界面中,重要因素之一是试图指导 API 用户以特定顺序执行操作,实用模式:内部域特定语言(9),在图 2 所示的情况下,我严格使用 BindingExpression 上的接口控制用户在 IntelliSense 中的选择,用户只能指定单个操作://Thelaststept

在许多 Fluent 界面中,重要因素之一是试图指导 API 用户以特定顺序执行操作。在图 2 所示的情况下,我严格使用 BindingExpression 上的接口控制用户在 IntelliSense 中的选择,即使在整个过程中始终返回同一个 BindingExpression 对象。思考一下这个问题。Fluent 界面的用户只应该一次性指定操作名称和键盘快捷方式键。此后,用户不必在 IntelliSense 中查看这些方法。DSL 表达式首先调用 ScreenObjectRegistry.Action(name),此操作会捕获将在菜单中显示的快捷方式的描述性名称并返回新的 BindingExpression 对象作为此接口:

public interface IActionExpression 
{ 
  IBindingExpression Bind(Key key); 
  IBindingExpression Bind(ModifierKeys modifiers, Key key); 
}

将 BindingExpression 转换为 IactionExpression 后,用户只能指定快捷方式的键组合,这将返回同一个 BindingExpression 对象,但如果转换为 IbindingExpression 接口,用户只能指定单个操作:

// The last step that captures the actual 
// "action" of the ScreenAction 
public interface IBindingExpression 
{ 
  ScreenAction ToDialog<T>(); 
  ScreenAction ToScreen<T>() where T : IScreen; 
  ScreenAction PublishEvent<T>() where T : new(); 
  ScreenAction To(Action action); 
  ScreenAction To(ICommand command); 
}

对象初始值

现在我们已经引入了方法链接作为在 C# 中进行内部 DSL 开发的主要方式,接下来就看看通常可简化 DSL 开发人员工作机制的其他可选模式。第一种可选模式是只使用 Microsoft .NET Framework 3.5 中引入的对象初始值功能。

上一页  4 5 6 7 8 9 10  下一页

Tags:实用 模式 内部

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接