87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CloudBuilder.CodeGenerator.Data
|
|
{
|
|
public class ClassInfo
|
|
{
|
|
public string ClassName { get; set; }
|
|
public string InterfaceName { get; set; }
|
|
public string ImplementTypeName { get; set; }
|
|
public string[] Usings { get; set; }
|
|
|
|
public bool IsDownload { get; set; } = false;
|
|
|
|
public ClassConstructorInfo[] ClassConstructorInfos;
|
|
|
|
public ClassMethodInfo[] ClassMethodInfos;
|
|
|
|
public ClassPropertyInfo[] ClassProperties;
|
|
|
|
public ClassFieldInfo[] ClassFields;
|
|
}
|
|
|
|
public class ClassFieldInfo
|
|
{
|
|
public bool IsValueType { get; set; } = false;
|
|
public string FieldName { get; set; }
|
|
public string FieldTypeName { get; set; }
|
|
|
|
public string FieldValue { get; set; }
|
|
}
|
|
|
|
public class ClassPropertyInfo
|
|
{
|
|
public bool IsValueType { get; set; } = false;
|
|
public string PropertyName { get; set; }
|
|
public string PropertyTypeName { get; set; }
|
|
}
|
|
|
|
public class ClassConstructorInfo
|
|
{
|
|
public string ConstructorName { get; set; }
|
|
public MethodParameter[] Parameters { get; set; }
|
|
}
|
|
|
|
public class ClassMethodInfo
|
|
{
|
|
public string MethodName { get; set; }
|
|
public string HttpName { get; set; } = "[HttpPost]";
|
|
public string UnitOfWorkName { get; set; } = "[UnitOfWork]";
|
|
public string AuthorizeName { get; set; } = "[AllowAnonymous]";
|
|
public string PermissionOperate { get; set; } = "[PermissionOperate(name: {0}, operate: {1})]";
|
|
public PermissionOperateAttribute PermissionOperateAttribute { get; set; }
|
|
public string MethodReturnName { get; set; }
|
|
public bool IsValueType { get; set; } = false;
|
|
public MethodParameter[] Parameters { get; set; }
|
|
}
|
|
|
|
public class MethodParameter
|
|
{
|
|
public bool IsValueType { get; set; } = false;
|
|
public string ParameterName { get; set; }
|
|
public string ParameterTypeName { get; set; }
|
|
|
|
public static bool CheckValueType(Type type)
|
|
{
|
|
var typeInfo = type.GetTypeInfo();
|
|
if (typeInfo.IsGenericType && typeInfo.GetGenericTypeDefinition() == typeof(Nullable<>))
|
|
{
|
|
// nullable type, check if the nested type is simple.
|
|
return CheckValueType(typeInfo.GetGenericArguments()[0]);
|
|
}
|
|
return typeInfo.IsPrimitive
|
|
|| typeInfo.BaseType?.Name == "ValueType"
|
|
|| typeInfo.IsEnum
|
|
|| type.Equals(typeof(string))
|
|
|| type.Equals(typeof(DateTime))
|
|
|| type.Equals(typeof(decimal));
|
|
}
|
|
}
|
|
}
|