Beispiel #1
0
        public static Func <SqliteDataReader, int, object> GetReadFunc(Type propertyFileType)
        {
            Func <SqliteDataReader, int, object> func = null;

            if (!m_readFuncsDic.TryGetValue(propertyFileType, out func))
            {
                if (propertyFileType == typeof(Int32))
                {
                    func = (reader, columnId) => reader.GetInt32(columnId);
                }
                else if (propertyFileType == typeof(Int64))
                {
                    func = (reader, columnId) => reader.GetInt64(columnId);
                }
                else if (propertyFileType == typeof(string))
                {
                    func = (reader, columnId) => reader.GetString(columnId);
                }
                else if (propertyFileType == typeof(bool))
                {
                    func = (reader, columnId) => reader.GetBoolean(columnId);
                }
                else if (propertyFileType == typeof(float))
                {
                    func = (reader, columnId) => reader.GetFloat(columnId);
                }
                else
                {
                    SqliteCustomSerializeFunc.CustomDeserializeFunc deserializeFunc = null;
                    m_customSerializeFun.TryGetDeserializeFunc(propertyFileType, out deserializeFunc);
                    if (null == deserializeFunc)
                    {
                        throw new USqliteException("尚未注册此类型的反序列化方法");
                    }
                    func = (reader, columnId) =>
                    {
                        var value = reader.GetString(columnId);
                        return(deserializeFunc(value));
                    };
                }
                m_readFuncsDic.Add(propertyFileType, func);
            }
            return(func);
        }
Beispiel #2
0
 public static void RegisterCustomSerializeFunc(Type type, SqliteCustomSerializeFunc.CustomSerializeFunc serialize, SqliteCustomSerializeFunc.CustomDeserializeFunc deserialize)
 {
     RegisterSerializeFunc(type, serialize);
     RegisterDeserializeFunc(type, deserialize);
 }