示例#1
0
        private UInt16 AddProperty(FieldInfo info)
        {
            var propertyName = info == null ? string.Empty : info.Name;
            var className    = info == null ? string.Empty : info.DeclaringType.Name;

            var fnv1a = new FNV1A64HashAlgorithm();

            fnv1a.AppendString(className, true);
            fnv1a.AppendString(propertyName, true);

            var index = m_properties.FindIndex(i => i.hash == fnv1a.HashUInt64);

            if (index >= 0)
            {
                return(Convert.ToUInt16(index));
            }
            m_properties.Add(new CR2WProperty()
            {
                className     = AddName(className),
                classFlags    = 0,
                propertyName  = AddName(propertyName),
                propertyFlags = 0,
                hash          = fnv1a.HashUInt64,
            });
            fnv1a.Dispose();
            return(Convert.ToUInt16(m_properties.Count));
        }
示例#2
0
        public static ulong ComputeFieldInfoHash(FieldInfo info)
        {
            var fieldName     = GetREDNameString(info);
            var declaringName = info.DeclaringType.Name;

            var fnv = new FNV1A64HashAlgorithm();

            fnv.AppendString(declaringName, true);
            fnv.AppendString(fieldName, true);

            return(fnv.HashUInt64);
        }