private bool IsValueDefault(object v, IsSerializedForLocalRepositoryAttribute IsSerializedForLocalRepository) { object o = IsSerializedForLocalRepository.GetDefualtValue(); if (o == null) { return(false); // DeaultValue annotation not exist on attr } if (v.Equals(o)) { return(true); } else { return(false); } //object def = GetDefault(v.GetType()); //if (def != null) //{ // // if (((object)v) == def) return true; // NOT WORKING // string s1 = ((object)v).ToString(); // if (string.IsNullOrEmpty(s1)) return true; // string s2 = def.ToString(); // if (s1 == s2) return true; //} //return false; }
private static void SetObjectSerialziedAttrDefaultValue(object obj) { // TODO: check if we can combine the below into one faster func try { var properties = obj.GetType().GetMembers().Where(x => x.MemberType == MemberTypes.Property); foreach (MemberInfo mi in properties) { IsSerializedForLocalRepositoryAttribute token = Attribute.GetCustomAttribute(mi, typeof(IsSerializedForLocalRepositoryAttribute), false) as IsSerializedForLocalRepositoryAttribute; if (token != null) { if (token.GetDefualtValue() != null) { obj.GetType().GetProperty(mi.Name).SetValue(obj, token.GetDefualtValue()); } } } var fields = obj.GetType().GetMembers().Where(x => x.MemberType == MemberTypes.Field); foreach (MemberInfo mi in fields) { IsSerializedForLocalRepositoryAttribute token = Attribute.GetCustomAttribute(mi, typeof(IsSerializedForLocalRepositoryAttribute), false) as IsSerializedForLocalRepositoryAttribute; if (token != null) { if (token.GetDefualtValue() != null) { obj.GetType().GetField(mi.Name).SetValue(obj, token.GetDefualtValue()); } } } } catch (Exception ex) { throw new Exception("Unable to set default value of serialized Repository Item - " + ex.Message); } }