private void LoadAspects()
{
XmlNodeList aspects = _node.SelectNodes("aspect");
foreach (XmlNode node in aspects)
{
String name = GetRequiredAttribute(node, "name");
AspectDefinition aspect = new AspectDefinition(LexicalInfo.Empty, name);
Configuration.Aspects.Add(aspect);
XmlNode singleType = node.SelectSingleNode("for/singletype");
if (singleType != null)
{
aspect.TargetType = new TargetTypeDefinition();
aspect.TargetType.SingleType = CreateTypeReference(singleType);
aspect.TargetType.TargetStrategy = TargetStrategyEnum.SingleType;
}
XmlNode assignableType = node.SelectSingleNode("for/assignable");
if (assignableType != null)
{
aspect.TargetType = new TargetTypeDefinition();
aspect.TargetType.AssignType = CreateTypeReference(assignableType);
aspect.TargetType.TargetStrategy = TargetStrategyEnum.Assignable;
}
XmlNodeList mixins = node.SelectNodes("mixin");
foreach (XmlNode inner in mixins)
{
MixinDefinition def = new MixinDefinition(LexicalInfo.Empty);
def.TypeReference = CreateTypeReference(inner);
aspect.Mixins.Add(def);
}
XmlNodeList pointcuts = node.SelectNodes("pointcut");
foreach (XmlNode inner in pointcuts)
{
PointCutDefinition def = CreatePointCutDefinition(inner);
aspect.PointCuts.Add(def);
}
}
}