Exemple #1
0
        public IDataCenter Read(string className, BigEndianReader reader)
        {
            Type type = m_Class.GetType();

            if (type.GetInterface("IDataCenter") == null)
            {
                throw new Exception("Unknow type");
            }


            foreach (GameDataField field in m_Fields)
            {
                field.Read(className, reader);
            }

            ConstructorInfo[] constructors          = type.GetConstructors();
            ParameterInfo[]   constructorParameters = constructors[1].GetParameters();
            List <object>     parameters            = new List <object>();

            foreach (ParameterInfo parameter in constructorParameters)
            {
                if (parameter.Name == "gameDataFileAccessor")
                {
                    parameters.Add(m_GameDataFileAccessor);
                    continue;
                }

                foreach (GameDataField field in m_Fields)
                {
                    if (parameter.Name.ToLower() == field.Name.ToLower())
                    {
                        parameters.Add(field.Value);
                        break;
                    }
                }
            }

            object result = constructors[1].Invoke(parameters.ToArray());

            return((IDataCenter)result);
        }