private static void AssignListProperty <TItem>(TItem item, PropertyInfo prop, IEnumerable <AttributeSyntax> matchingAttributes) { var propType = UnderlyingType(prop.PropertyType); var concreteMethod = ReflectionSupport.MakeMethod(typeof(ParserForMetadata <T>), "AssignListPropertyGeneric", typeof(TItem), propType); concreteMethod.Invoke(null, new object[] { item, prop, matchingAttributes }); }
/// <summary> /// /// </summary> /// <typeparam name="TMethod"></typeparam> /// <param name="node"></param> /// <returns></returns> /// <remarks> /// Don't be concerned by the lack of references, this is called via reflection /// </remarks> private IEnumerable <TParamItem> GetParsedParametersGeneric <TParamItem>(MethodDeclarationSyntax methodNode) { var ret = new List <TParamItem>(); var concreteMethod = ReflectionSupport.MakeMethod(typeof(ParserForMetadata <T>), "ParseParameter", typeof(TParamItem)); var parameterNodes = methodNode.GetParameters(); foreach (var parameterNode in parameterNodes) { ret.Add((TParamItem)concreteMethod.Invoke(this, new object[] { parameterNode })); } return(ret); }
/// <summary> /// /// </summary> /// <typeparam name="TMethod"></typeparam> /// <param name="node"></param> /// <returns></returns> /// <remarks> /// Don't be concerned by the lack of references, this is called via reflection /// </remarks> private IEnumerable <TMethodItem> GetParsedMethodsGeneric <TMethodItem>(ClassDeclarationSyntax classNode) { var ret = new List <TMethodItem>(); var concreteMethod = ReflectionSupport.MakeMethod(typeof(ParserForMetadata <T>), "ParseMethod", typeof(TMethodItem)); var methodNodes = classNode.GetMethods(); foreach (var methodNode in methodNodes) { ret.Add((TMethodItem)concreteMethod.Invoke(this, new object[] { methodNode })); } return(ret); }
private IEnumerable GetParsedMethods <TDom>(TDom domItem, System.Reflection.TypeInfo propType) { var ret = new List <TMethodItem>(); var concreteMethod = ReflectionSupport.MakeMethod(typeof(ParserForMetadata <T>), "ParseMethod", typeof(TMethodItem)); var methodNodes = classNode.GetMethods(); foreach (var methodNode in methodNodes) { ret.Add((TMethodItem)concreteMethod.Invoke(this, new object[] { methodNode })); } return(ret); var concreteMethod = ReflectionSupport.MakeMethod(typeof(ParserForMetadata <T>), "GetParsedMethodsGeneric", propType); return((IEnumerable)concreteMethod.Invoke(this, new object[] { classNode })); }
private IEnumerable GetParsedParameters(SyntaxNode methodNode, Type propType) { var concreteMethod = ReflectionSupport.MakeMethod(typeof(ParserForMetadata <T>), "GetParsedParametersGeneric", propType); return((IEnumerable)concreteMethod.Invoke(this, new object[] { methodNode })); }