Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
        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));
            }
        }