private static bool IsTargetField(FieldInfo field, bool isSerializable, bool isDataContract) { if (field.IsInitOnly) { return false; } if (isDataContract) { return field.IsDataMember(); } else if (isSerializable) { return !field.IsNonSerialized(); } else { return field.IsPublic; } }