public static object GetDefaultFieldValue(AstType type, IMemberResolver resolver) { if (type is PrimitiveType) { var primitiveType = (PrimitiveType)type; switch (primitiveType.KnownTypeCode) { case KnownTypeCode.Decimal: return(0m); case KnownTypeCode.Int16: case KnownTypeCode.Int32: case KnownTypeCode.Int64: case KnownTypeCode.UInt16: case KnownTypeCode.UInt32: case KnownTypeCode.UInt64: case KnownTypeCode.Byte: case KnownTypeCode.Double: case KnownTypeCode.SByte: case KnownTypeCode.Single: return(0); case KnownTypeCode.Boolean: return(false); case KnownTypeCode.Char: return((int)'0'); } } var resolveResult = resolver.ResolveNode(type, null); if (resolveResult.Type.Kind == TypeKind.TypeParameter) { if (resolveResult.Type.IsReferenceType == null || resolveResult.Type.IsReferenceType == false) { return(new RawString(type.ToString() + '.' + TransformCtx.DefaultInvoke)); } } if (!resolveResult.IsError && NullableType.IsNullable(resolveResult.Type)) { return(null); } if (!resolveResult.IsError && resolveResult.Type.Kind == TypeKind.Enum) { return(0); } if (!resolveResult.IsError && resolveResult.Type.Kind == TypeKind.Struct) { return(type); } return(null); }
public static object GetDefaultFieldValue(AstType type, IMemberResolver resolver) { if (type is PrimitiveType) { var primitiveType = (PrimitiveType)type; switch (primitiveType.KnownTypeCode) { case KnownTypeCode.Decimal: return(0m); case KnownTypeCode.Int64: return(0L); case KnownTypeCode.UInt64: return(0UL); case KnownTypeCode.Int16: case KnownTypeCode.Int32: case KnownTypeCode.UInt16: case KnownTypeCode.UInt32: case KnownTypeCode.Byte: case KnownTypeCode.Double: case KnownTypeCode.SByte: case KnownTypeCode.Single: return(0); case KnownTypeCode.Boolean: return(false); } } var resolveResult = resolver.ResolveNode(type, null); var o = GetDefaultFieldValue(resolveResult.Type, type, false); if (o != null) { return(o); } if (!resolveResult.IsError && NullableType.IsNullable(resolveResult.Type)) { return(null); } if (!resolveResult.IsError && (resolveResult.Type.IsKnownType(KnownTypeCode.Enum) || resolveResult.Type.Kind == TypeKind.Enum)) { return(0); } if (!resolveResult.IsError && resolveResult.Type.Kind == TypeKind.Struct) { return(type); } return(null); }
public static object GetDefaultFieldValue(AstType type, IMemberResolver resolver) { if (type is PrimitiveType) { var primitiveType = (PrimitiveType)type; switch (primitiveType.KnownTypeCode) { case KnownTypeCode.Decimal: return 0m; case KnownTypeCode.Int16: case KnownTypeCode.Int32: case KnownTypeCode.Int64: case KnownTypeCode.UInt16: case KnownTypeCode.UInt32: case KnownTypeCode.UInt64: case KnownTypeCode.Byte: case KnownTypeCode.Double: case KnownTypeCode.SByte: case KnownTypeCode.Single: return 0; case KnownTypeCode.Boolean: return false; } } var resolveResult = resolver.ResolveNode(type, null); if (!resolveResult.IsError && NullableType.IsNullable(resolveResult.Type)) { return null; } if (!resolveResult.IsError && resolveResult.Type.Kind == TypeKind.Enum) { return 0; } if (!resolveResult.IsError && resolveResult.Type.Kind == TypeKind.Struct) { return type; } return null; }