private MethodAttributes QueryPropertyAccessRights(TypeBuilder parentNS) { if (alwaysInstanceMethod) { return(CodeGenerationUtils.PublicGetter()); } return(parentNS == rootType?CodeGenerationUtils.StaticPublicGetter() : CodeGenerationUtils.PublicGetter()); }
private void CreateMetaDataStructure(IEnumerable <ByNameGrouping> typesGroupesByName) { var metaInfoType = CreateMetaInfoProperty(typesGroupesByName); var constructorOfMetaInfoType = metaInfoType.GetConstructors().Single(); var property = CodeGenerationUtils.DefineProperty(rootType, MetaDataProperty, metaInfoType); var getterMethod = CodeGenerationUtils.GetterMethodFor(rootType, property, CodeGenerationUtils.StaticPublicGetter()); var lambda = Expression.Lambda(typeof(Func <>).MakeGenericType(metaInfoType), Expression.New(constructorOfMetaInfoType), new ParameterExpression[0]); lambda.CompileToMethod(getterMethod); }