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)); }
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); }