private void FillAdditionalCsharpCodeData(CodeStepCsharp csharpCode, XElement stepElement) { Action <CodeStepCsharp, string> addAction; if (stepElement.HaveChildElement(LessonXmlElements.CodeDependenciesElement)) { addAction = (code, at) => code.OtherCodeDependencies.Add(at); FillElementChildrenCollection(csharpCode, stepElement, LessonXmlElements.CodeDependenciesElement, LessonXmlElements.CodeDependencyElement, addAction); } if (stepElement.HaveChildElement(LessonXmlElements.AllowedTypesConstructedElement)) { addAction = (code, at) => code.AllowedTypesConstructed.Add(at); FillElementChildrenCollection(csharpCode, stepElement, LessonXmlElements.AllowedTypesConstructedElement, LessonXmlElements.AllowedTypeElement, addAction); } if (stepElement.HaveChildElement(LessonXmlElements.AllowedMethodsCalledElement)) { addAction = (code, at) => code.AllowedMethodsCalled.Add(at); FillElementChildrenCollection(csharpCode, stepElement, LessonXmlElements.AllowedMethodsCalledElement, LessonXmlElements.AllowedMethodElement, addAction); } }
private CodeStepCsharp CreateCodeCsharpStep(XElement stepElement, int index) { var csharpStep = new CodeStepCsharp(); FillStepCodeData(csharpStep, stepElement, index); CreateValidator(csharpStep, stepElement); FillAdditionalCsharpCodeData(csharpStep, stepElement); return(csharpStep); }
private static void FillElementChildrenCollection(CodeStepCsharp csharpCode, XElement parentStepElement, string elementWithCollectionName, string itemElementName, Action <CodeStepCsharp, string> addAction) { var otherCodeDependencies = parentStepElement.GetChildCollection(elementWithCollectionName, itemElementName); foreach (var dependency in otherCodeDependencies) { addAction.Invoke(csharpCode, dependency.GetElementStringValue()); } }
public CSharpCodeSafetyVisitor(CodeStepCsharp step, SemanticModel model) { this.step = step; this.model = model; }