protected override object CreateInstance(WorkflowMarkupSerializationManager serializationManager, Type type) { if (serializationManager == null) { throw new ArgumentNullException("serializationManager"); } if (type == null) { throw new ArgumentNullException("type"); } object designer = null; IDesignerHost host = serializationManager.GetService(typeof(IDesignerHost)) as IDesignerHost; XmlReader reader = serializationManager.WorkflowMarkupStack[typeof(XmlReader)] as XmlReader; if (host != null && reader != null) { //Find the associated activity string associatedActivityName = String.Empty; while (reader.MoveToNextAttribute() && !reader.LocalName.Equals("Name", StringComparison.Ordinal)) { ; } if (reader.LocalName.Equals("Name", StringComparison.Ordinal) && reader.ReadAttributeValue()) { associatedActivityName = reader.Value; } reader.MoveToElement(); if (!String.IsNullOrEmpty(associatedActivityName)) { CompositeActivityDesigner parentDesigner = serializationManager.Context[typeof(CompositeActivityDesigner)] as CompositeActivityDesigner; if (parentDesigner == null) { Activity activity = host.RootComponent as Activity; if (activity != null && !associatedActivityName.Equals(activity.Name, StringComparison.Ordinal)) { foreach (IComponent component in host.Container.Components) { activity = component as Activity; if (activity != null && associatedActivityName.Equals(activity.Name, StringComparison.Ordinal)) { break; } } } if (activity != null) { designer = host.GetDesigner(activity); } } else { CompositeActivity compositeActivity = parentDesigner.Activity as CompositeActivity; if (compositeActivity != null) { Activity matchingActivity = null; foreach (Activity activity in compositeActivity.Activities) { if (associatedActivityName.Equals(activity.Name, StringComparison.Ordinal)) { matchingActivity = activity; break; } } if (matchingActivity != null) { designer = host.GetDesigner(matchingActivity); } } } if (designer == null) { serializationManager.ReportError(SR.GetString(SR.Error_LayoutSerializationActivityNotFound, reader.LocalName, associatedActivityName, "Name")); } } else { serializationManager.ReportError(SR.GetString(SR.Error_LayoutSerializationAssociatedActivityNotFound, reader.LocalName, "Name")); } } return(designer); }
protected override object CreateInstance(WorkflowMarkupSerializationManager serializationManager, Type type) { Activity activity3; if (serializationManager == null) { throw new ArgumentNullException("serializationManager"); } if (type == null) { throw new ArgumentNullException("type"); } object obj2 = null; IDesignerHost service = serializationManager.GetService(typeof(IDesignerHost)) as IDesignerHost; XmlReader reader = serializationManager.WorkflowMarkupStack[typeof(XmlReader)] as XmlReader; if ((service == null) || (reader == null)) { return(obj2); } string str = string.Empty; while (reader.MoveToNextAttribute() && !reader.LocalName.Equals("Name", StringComparison.Ordinal)) { } if (reader.LocalName.Equals("Name", StringComparison.Ordinal) && reader.ReadAttributeValue()) { str = reader.Value; } reader.MoveToElement(); if (string.IsNullOrEmpty(str)) { serializationManager.ReportError(SR.GetString("Error_LayoutSerializationAssociatedActivityNotFound", new object[] { reader.LocalName, "Name" })); return(obj2); } CompositeActivityDesigner designer = serializationManager.Context[typeof(CompositeActivityDesigner)] as CompositeActivityDesigner; if (designer != null) { CompositeActivity activity2 = designer.Activity as CompositeActivity; if (activity2 == null) { goto Label_01D0; } activity3 = null; foreach (Activity activity4 in activity2.Activities) { if (str.Equals(activity4.Name, StringComparison.Ordinal)) { activity3 = activity4; break; } } } else { Activity rootComponent = service.RootComponent as Activity; if ((rootComponent != null) && !str.Equals(rootComponent.Name, StringComparison.Ordinal)) { foreach (IComponent component in service.Container.Components) { rootComponent = component as Activity; if ((rootComponent != null) && str.Equals(rootComponent.Name, StringComparison.Ordinal)) { break; } } } if (rootComponent != null) { obj2 = service.GetDesigner(rootComponent); } goto Label_01D0; } if (activity3 != null) { obj2 = service.GetDesigner(activity3); } Label_01D0: if (obj2 == null) { serializationManager.ReportError(SR.GetString("Error_LayoutSerializationActivityNotFound", new object[] { reader.LocalName, str, "Name" })); } return(obj2); }