Example #1
0
        static CustomAttributeBuilder CreateAttributeForProperty(AttrDto attrDto)
        {
            ConstructorInfo myConstructorInfo = attrDto.AttrType.GetConstructor(attrDto.AttrParams);

            return(new CustomAttributeBuilder(myConstructorInfo, attrDto.AttrParamValues));
        }
Example #2
0
        static Type CreateDynamicTypeWithNewProps(List <PropertyAttr> list, string className, Type baseClass, AttrDto attrDto)
        {
            TypeBuilder        tb          = GetTypeBuilder(className, baseClass);
            ConstructorBuilder constructor = tb.DefineDefaultConstructor(MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName);

            foreach (var field in list)
            {
                CreateProperty(tb, field.Name, field.Type, attrDto);
            }

            Type objectType = tb.CreateType();

            return(objectType);
        }
Example #3
0
        static void CreateProperty(TypeBuilder tb, string propertyName, Type propertyType, AttrDto attrDto)
        {
            FieldBuilder fieldBuilder = tb.DefineField("_" + propertyName, propertyType, FieldAttributes.Private);

            PropertyBuilder propertyBuilder = tb.DefineProperty(propertyName, PropertyAttributes.HasDefault, propertyType, null);

            if (attrDto != null)
            {
                propertyBuilder.SetCustomAttribute(CreateAttributeForProperty(attrDto));
            }

            propertyBuilder.SetGetMethod(GetPropBuilder(tb, fieldBuilder, propertyName, propertyType));
            propertyBuilder.SetSetMethod(SetPropBuilder(tb, fieldBuilder, propertyName, propertyType));
        }