internal static string GetFastDeepClonerIdentifier(this object o) { if (o == null) { return(null); } var type = o.GetType(); var p = CachedFastDeepClonerIdentifier.ContainsKey(type) ? CachedFastDeepClonerIdentifier[type] : CachedFastDeepClonerIdentifier.GetOrAdd(type, DeepCloner.GetFastDeepClonerProperties(type).FirstOrDefault(x => x.FastDeepClonerPrimaryIdentifire)); return(p == null ? null : type.FullName + type.Name + p.Name + p.FullName + p.GetValue(o)); }