programloader.cs
来自「WF本质论一书的源码,要书籍的朋友同我联系.」· CS 代码 · 共 37 行
CS
37 行
using System;
using System.Workflow.Runtime.Hosting;
using System.Xml;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.Activities.Rules;
using System.ComponentModel.Design;
using System.Workflow.ComponentModel.Compiler;
using System.ComponentModel.Design.Serialization;
namespace EssentialWF.Services {
public class StandardProgramLoaderService : WorkflowLoaderService {
protected override Activity CreateInstance( Type workflowType) {
return (Activity)Activator.CreateInstance(workflowType);
}
protected override Activity CreateInstance(
XmlReader workflowDefinitionReader, XmlReader rulesReader) {
Activity root = null;
ITypeProvider typeProvider = this.Runtime.GetService<ITypeProvider>();
ServiceContainer serviceContainer = new ServiceContainer();
serviceContainer.AddService(typeof(ITypeProvider), typeProvider);
DesignerSerializationManager manager = new DesignerSerializationManager(serviceContainer);
using (manager.CreateSession()) {
WorkflowMarkupSerializationManager xomlSerializationManager = new WorkflowMarkupSerializationManager(manager);
root = new WorkflowMarkupSerializer().Deserialize(xomlSerializationManager, workflowDefinitionReader) as Activity;
if (root != null && rulesReader != null) {
object rules = new WorkflowMarkupSerializer().Deserialize(xomlSerializationManager, rulesReader);
root.SetValue(RuleDefinitions.RuleDefinitionsProperty, rules);
}
}
return root;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?