public static ResolveResult GetValueTypeInitializer(IType ce, NProject Project) { var fullName = SkJs.GetEntityJsName(ce); if (ce.FullName == "System.Nullable") return Cs.Null(); if (ce is ITypeDefinition) { var def = (ITypeDefinition)ce; if (def.KnownTypeCode != KnownTypeCode.None) { if (def.KnownTypeCode == KnownTypeCode.Boolean) { return Cs.Value(false, Project); } else if (def.KnownTypeCode == KnownTypeCode.Char) { return Cs.Value('\0', Project); } else if (def.KnownTypeCode == KnownTypeCode.SByte || def.KnownTypeCode == KnownTypeCode.Int16 || def.KnownTypeCode == KnownTypeCode.Int32 || def.KnownTypeCode == KnownTypeCode.Int64 || def.KnownTypeCode == KnownTypeCode.UInt16 || def.KnownTypeCode == KnownTypeCode.UInt32 || def.KnownTypeCode == KnownTypeCode.UInt64 || def.KnownTypeCode == KnownTypeCode.Byte || def.KnownTypeCode == KnownTypeCode.Decimal || def.KnownTypeCode == KnownTypeCode.Double || def.KnownTypeCode == KnownTypeCode.Single ) { return Cs.Value(0, Project); } } } if (ce.Kind == TypeKind.Enum) { var en = ce; var enumMembers = en.GetFields(); var defaultEnumMember = enumMembers.Where(t => (t.ConstantValue is int) && (int)t.ConstantValue == 0).FirstOrDefault() ?? enumMembers.FirstOrDefault(); if (defaultEnumMember != null) return defaultEnumMember.AccessSelf();//.Access().Member(c.CreateTypeRef(en), defaultEnumMember); else return null; } else if (ce.GetEntityType().FullName == "System.DateTime") { var minDateFe = ce.GetFields(t => t.Name == "MinValue").First(); return minDateFe.AccessSelf();// c.Member(c.Class(c.DateTimeType), minDateFe); } else { return Cs.New(ce); } }
public static ResolveResult GetValueTypeInitializer(IType ce, NProject Project) { var fullName = SkJs.GetEntityJsName(ce); if (ce.FullName == "System.Nullable") { return(Cs.Null()); } if (ce is ITypeDefinition) { var def = (ITypeDefinition)ce; if (def.KnownTypeCode != KnownTypeCode.None) { if (def.KnownTypeCode == KnownTypeCode.Boolean) { return(Cs.Value(false, Project)); } else if (def.KnownTypeCode == KnownTypeCode.Char) { return(Cs.Value('\0', Project)); } else if (def.KnownTypeCode == KnownTypeCode.SByte || def.KnownTypeCode == KnownTypeCode.Int16 || def.KnownTypeCode == KnownTypeCode.Int32 || def.KnownTypeCode == KnownTypeCode.Int64 || def.KnownTypeCode == KnownTypeCode.UInt16 || def.KnownTypeCode == KnownTypeCode.UInt32 || def.KnownTypeCode == KnownTypeCode.UInt64 || def.KnownTypeCode == KnownTypeCode.Byte || def.KnownTypeCode == KnownTypeCode.Decimal || def.KnownTypeCode == KnownTypeCode.Double || def.KnownTypeCode == KnownTypeCode.Single ) { return(Cs.Value(0, Project)); } } } if (ce.Kind == TypeKind.Enum) { var en = ce; var enumMembers = en.GetFields(); var defaultEnumMember = enumMembers.Where(t => (t.ConstantValue is int) && (int)t.ConstantValue == 0).FirstOrDefault() ?? enumMembers.FirstOrDefault(); if (defaultEnumMember != null) { return(defaultEnumMember.AccessSelf());//.Access().Member(c.CreateTypeRef(en), defaultEnumMember); } else { return(null); } } else if (ce.GetEntityType().FullName == "System.DateTime") { var minDateFe = ce.GetFields(t => t.Name == "MinValue").First(); return(minDateFe.AccessSelf());// c.Member(c.Class(c.DateTimeType), minDateFe); } else { return(Cs.New(ce)); } }