コード例 #1
0
        private object[] GetItemValues(System.Type childRuntimeType)
        {
            TypeDecoratorList type = (decorator as TypeDecoratorList);

            if (null == type || string.IsNullOrEmpty(value))
            {
                return(new object[0]);
            }

            if (type.flag < 0)
            {
                throw new System.Exception(string.Format("value depth is overflow, max depth is 2"));
            }

            char split = type.flag == 0 ? Define.UserDefine.global.excel.splitFlag0 : Define.UserDefine.global.excel.splitFlag1;

            string[] str_values = value.Split(split);
            int      count      = str_values.Length;

            object[] obj_values = new object[count];

            TypeDecorator child = type.child;

            child.runtimeType = childRuntimeType;
            for (int i = 0; i < count; i++)
            {
                obj_values[i] = ValueAdapter.Adapter(str_values[i], child);
            }
            return(obj_values);
        }
コード例 #2
0
 public TypeDecoratorDictionary(TypeDecorator key, TypeDecorator value) : base(null)
 {
     this.key          = key;
     this.value        = value;
     typeDecotrator    = EDecotratorType.Dictionary;
     this.originalData = GetName();
     Check();
 }
コード例 #3
0
        public static List <Type> Get_ControlTypes(IModelAdditionalViewControlsRule modelAdditionalViewControlsRule)
        {
            TypeDecorator decorator = GetTypeDecorator(modelAdditionalViewControlsRule.DecoratorType, modelAdditionalViewControlsRule.Position);

            return(decorator != null?FindTypeDescendants(decorator).Select(info => info.Type).ToList()
                       : new List <Type>
            {
                typeof(NotAvaliableInThisPlatform)
            });
        }
コード例 #4
0
        private void SerializeCSObj(CSObjectData obj, Type type, MemoryStream stream, Assembly assembly, CSObject data, int row)
        {
            object instance = Activator.CreateInstance(type);

            PropertyInfo[] pis = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);

            int key   = 0;
            int count = pis.Length;

            for (int i = 0; i < count; i++)
            {
                PropertyInfo  pi            = pis[i];
                string        value         = obj.datas[i];
                TypeDecorator typeDecorator = data.type.datas[i];
                try
                {
                    typeDecorator.runtimeType = pi.PropertyType;
                    object objvalue = ValueAdapter.Adapter(value, typeDecorator);
                    pi.SetValue(instance, objvalue, null);

                    if (i == 0 && pi.PropertyType == typeof(int))
                    {
                        key = (int)objvalue;
                    }
                }
                catch (Exception e)
                {
                    throw new Exception(string.Format("[{0}] complier data is error, the fild is:{1}, value is:{2}, row:{3}, column:{4},  {5}{6} ",
                                                      data.name,
                                                      data.property.datas[i].name,
                                                      value,
                                                      row + Define.UserDefine.global.excel.startIndex,
                                                      typeDecorator.index,
                                                      "\r\n",
                                                      e.ToString()));
                }
            }

            byte[] data_byte = Serialize(instance);

            int length      = sizeof(int);
            int data_length = data_byte.Length;
            int all_length  = length + length + data_length;

            byte[] write       = new byte[all_length];
            byte[] length_byte = BitConverter.GetBytes(data_length);
            byte[] key_byte    = BitConverter.GetBytes(key);

            Buffer.BlockCopy(key_byte, 0, write, 0, length);
            Buffer.BlockCopy(length_byte, 0, write, length, length);
            Buffer.BlockCopy(data_byte, 0, write, length + length, data_length);

            stream.Write(write, 0, all_length);
        }
コード例 #5
0
 private void AdapterType(string data, int column)
 {
     try
     {
         TypeDecorator typeDecorator = TypeAdapter.Adapter(data);
         typeDecorator.index = column;
         datas.Add(typeDecorator);
     }
     catch (System.Exception e)
     {
         Common.Utility.Logger.Log("[{0}] AdapterType error, type is:{1}, column:{2}.", groupName, data, column);
         throw e;
     }
 }
コード例 #6
0
        public static object Adapter(string value, TypeDecorator type)
        {
            try
            {
                switch (type.typeDecotrator)
                {
                case EDecotratorType.Int:
                    return(new ValueDecoratorInt(value, type).GetValue());

                case EDecotratorType.Float:
                    return(new ValueDecoratorFloat(value, type).GetValue());

                case EDecotratorType.Bool:
                    return(new ValueDecoratorBool(value, type).GetValue());

                case EDecotratorType.String:
                    return(new ValueDecoratorString(value, type).GetValue());

                case EDecotratorType.Vector2:
                    return(new ValueDecoratorVector2(value, type).GetValue());

                case EDecotratorType.Vector3:
                    return(new ValueDecoratorVector3(value, type).GetValue());

                case EDecotratorType.Color:
                    return(new ValueDecoratorColor(value, type).GetValue());

                case EDecotratorType.List:
                    return(new ValueDecoratorList(value, type).GetValue());

                case EDecotratorType.Dictionary:
                    return(new ValueDecoratorDictionary(value, type).GetValue());

                default:
                    throw new Exception("parse value error, type is " + type.GetName());
                }
            }
            catch (Exception e)
            {
                throw new Exception(string.Format("parse value error, type is {0}, value is {1}, error is: {2}", type.GetName(), value, e.Message));
            }
        }
コード例 #7
0
        private object[] GetItemValues(TypeDecorator type, System.Type runtimeType, string[] values)
        {
            if (TypeAdapter.IsContainer(type.typeDecotrator))
            {
                throw new Exception(string.Format("map key or value type is container, the type is {0}.", type.GetName()));
            }

            if (null == runtimeType || null == values || values.Length < 1)
            {
                return(new object[0]);
            }

            int count = values.Length;

            object[] obj_values = new object[count];

            type.runtimeType = runtimeType;
            for (int i = 0; i < count; i++)
            {
                obj_values[i] = ValueAdapter.Adapter(values[i], type);
            }
            return(obj_values);
        }
コード例 #8
0
        public static Type Get_ControlType(IAdditionalViewControlsRule additionalViewControlsRule)
        {
            TypeDecorator decorator = ModelAdditionalViewControlsRuleDomainLogic.GetTypeDecorator(additionalViewControlsRule.DecoratorType, additionalViewControlsRule.Position);

            return(decorator != null ? decorator.DefaultType : typeof(NotAvaliableInThisPlatform));
        }
コード例 #9
0
        private static void GenCSCode(CSObject data)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(codeHeader);
            sb.Append("\r\n");
            sb.Append(string.Format("using {0};\r\n", CSHelper.GetUseNameSpace()));

            string nameSpace = Define.UserDefine.global.nameSpace;

            if (data.HadCollections)
            {
                sb.Append("using System.Collections.Generic;\r\n");
            }
            if (data.HadExtends && nameSpace != Define.ConstDefine.EXTENDS_NAMESPACE)
            {
                sb.Append(Define.ConstDefine.EXTENDS_NAMESPACE + ";\r\n");
            }

            sb.Append("\r\n");
            if (hadnsName)
            {
                sb.Append("namespace ");
                sb.Append(nameSpace);
                sb.Append("\r\n{");
                sb.Append("\r\n");
            }

            sb.Append(tab);
            sb.Append(CSHelper.ClassAttribute());
            sb.Append("\r\n");

            if (data.HadExtends)
            {
                int index = 1;
                if (data.HadVector2)
                {
                    sb.Append(tab);
                    sb.Append(string.Format("[ProtoInclude({0}, typeof(DataTable.Vector2))]\r\n", index));
                    index++;
                }

                if (data.HadVector3)
                {
                    sb.Append(tab);
                    sb.Append(string.Format("[ProtoInclude({0}, typeof(DataTable.Vector3))]\r\n", index));
                    index++;
                }

                if (data.HadColor)
                {
                    sb.Append(tab);
                    sb.Append(string.Format("[ProtoInclude({0}, typeof(DataTable.Color))]\r\n", index));
                    index++;
                }
            }

            sb.Append(tab);
            sb.Append("public partial class ");
            sb.Append(data.name);
            sb.Append("\r\n");
            sb.Append(tab);
            sb.Append("{");

            // construction
            sb.Append("\r\n");
            sb.Append(tab);
            sb.Append("\t");
            sb.Append("public ");
            sb.Append(data.name);
            sb.Append("() {");

            StringBuilder propertyCode = new StringBuilder();
            int           count        = data.typeCount;

            for (int i = 0; i < count; i++)
            {
                TypeDecorator type = data.type.datas[i];
                CSObjectPropertyGroup.Data propertry = data.property.datas[i];
                if (TypeAdapter.IsContainer(type.typeDecotrator) || TypeAdapter.HadExtends(type))
                {
                    sb.Append("\r\n");
                    sb.Append(tab);
                    sb.Append("\t\t");
                    sb.Append(propertry.name);
                    sb.Append(" = new ");
                    sb.Append(type.GetName());
                    sb.Append("();");
                }

                propertyCode.Append("\r\n");
                propertyCode.Append(tab);
                propertyCode.Append("\t");
                propertyCode.Append("/// <summary>\r\n");
                propertyCode.Append(tab);
                propertyCode.Append("\t/// ");
                propertyCode.Append(propertry.summary);
                propertyCode.Append("\r\n");
                propertyCode.Append(tab);
                propertyCode.Append("\t/// </summary>\r\n");

                propertyCode.Append(tab);
                propertyCode.Append("\t");
                int index = i + 1;
                propertyCode.Append(CSHelper.Attribute(index));

                propertyCode.Append("\r\n");
                propertyCode.Append(tab);
                propertyCode.Append("\t");
                propertyCode.Append("public ");
                propertyCode.Append(type.GetName());

                propertyCode.Append(" ");
                propertyCode.Append(propertry.name);
                propertyCode.Append(" { private set; get; }");
                propertyCode.Append("\r\n");
            }

            sb.Append("\r\n");
            sb.Append("\t");
            sb.Append(tab);
            sb.Append("}");
            sb.Append("\r\n");

            sb.Append(propertyCode.ToString());
            sb.Append(tab);
            sb.Append("}");

            if (hadnsName)
            {
                sb.Append("\r\n");
                sb.Append("}");
            }

            CSHelper.Write(data.name, sb.ToString());
        }
コード例 #10
0
 public ValueDecoratorInt(string value, TypeDecorator decorator) : base(value, decorator)
 {
     this.value = string.IsNullOrEmpty(value) ? "0" : value;
 }
コード例 #11
0
 public TypeDecoratorList(TypeDecorator item) : base(item.GetName())
 {
     this.child     = item;
     typeDecotrator = EDecotratorType.List;
     this.flag      = GetDepth();
 }
コード例 #12
0
 public ValueDecoratorDictionary(string type, TypeDecorator decorator) : base(type, decorator)
 {
 }
コード例 #13
0
 public ValueDecorator(string value, TypeDecorator decorator)
 {
     this.value     = value.Trim();
     this.decorator = decorator;
 }
コード例 #14
0
 public ValueDecoratorString(string value, TypeDecorator decorator) : base(value, decorator)
 {
     this.value = string.IsNullOrEmpty(value) ? string.Empty : value;
 }
コード例 #15
0
 public ValueDecoratorList(string type, TypeDecorator decorator) : base(type, decorator)
 {
 }
コード例 #16
0
 public ValueDecoratorVector3(string value, TypeDecorator decorator) : base(value, decorator)
 {
 }
コード例 #17
0
 public ValueDecoratorColor(string value, TypeDecorator decorator) : base(value, decorator)
 {
 }
コード例 #18
0
 static IEnumerable<ITypeInfo> FindTypeDescendants(TypeDecorator decorator) {
     return ReflectionHelper.FindTypeDescendants(XafTypesInfo.Instance.FindTypeInfo(decorator.ControlType), true).Where(info => info.FindAttribute<AdditionalViewControlAttribute>()!=null);
 }
コード例 #19
0
 static IEnumerable <ITypeInfo> FindTypeDescendants(TypeDecorator decorator)
 {
     return(ReflectionHelper.FindTypeDescendants(XafTypesInfo.Instance.FindTypeInfo(decorator.ControlType), true).Where(info => info.Implements <IAdditionalViewControl>()));
 }
コード例 #20
0
 static IEnumerable<ITypeInfo> FindTypeDescendants(TypeDecorator decorator) {
     return ReflectionHelper.FindTypeDescendants(XafTypesInfo.Instance.FindTypeInfo(decorator.ControlType), true).Where(info => info.Implements<IAdditionalViewControl>());
 }