Пример #1
0
        public override void CheckImportField(string memberName, VirtualType memberType)
        {
            var field = Type.GetField(memberName);

            if (field == null)
            {
                throw MakeConfigException.FieldReferenceNotExist(Type, memberName);
            }

            if (!(memberType is CLRType clrType))
            {
                throw new InnerException();
            }

            if (field.FieldType != clrType.Type)
            {
                throw MakeConfigException.FieldReferenceTypeNotMatch(field.FieldType.FullName, clrType.Type.FullName);
            }
        }
Пример #2
0
        private static void ProcessTable(XmlNode table)
        {
            var name = table.Attributes?["name"]?.Value;

            if (name == null)
            {
                throw MakeConfigException.ConfigTableNameMiss();
            }

            var tableConfig = new TableConfig();

            table.ForeachNodes("define", define =>
            {
                var type = new TableConfig.DefineType
                {
                    FieldName = define.Attributes?["name"]?.Value
                };
                define.TryParseSingleNode("comment", ref type.Description);
                define.TryParseSingleNode("import", ref type.ImportType);
                tableConfig.AddDefineType(type);
            });
            TableConfigs.Add(name, tableConfig);
        }