public void ReadConfig() { foreach (var xNode in Config.Nodes().OfType <XElement>()) { ClassNames.Add(xNode.Name?.LocalName); } if (!ClassNames.Any()) { var messageBuilder = new StringBuilder(); messageBuilder.AppendLine("You must to specify at least one inner class name node to use injection!"); messageBuilder.AppendLine("Example:"); messageBuilder.AppendLine("<ConstructorIndex ...>"); messageBuilder.AppendLine("\t<ClassFullNameA/>"); messageBuilder.AppendLine("\t<ClassFullNameB/>"); messageBuilder.AppendLine("\t..."); messageBuilder.AppendLine("</ConstructorIndex>"); throw new WeavingException(messageBuilder.ToString()); } // process non public constructors parameter var processNonPublicAttribute = Config.Attribute(nameof(AllowNonPublic)); if (processNonPublicAttribute != null) { if (!bool.TryParse(processNonPublicAttribute.Value, out var processNonPublic)) { var message = $"Bad attribute {nameof(AllowNonPublic)} BOOL value: {processNonPublicAttribute.Value}"; throw new WeavingException(message); } AllowNonPublic = processNonPublic; } }