From d5a9e3e608bc10dc0e49816b4d51282c5daed1c0 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Sun, 23 Mar 2025 18:54:33 +0100 Subject: [PATCH 01/15] feat!: overhaul DatabaseAccessAbstractions This commit removes all synchronous interfaces and everything that has to do with explicit transactions. IAsyncReadOnlySession is also removed as it will be replaced by .NET's IAsyncDisposable. --- .../IAsyncReadOnlySession.cs | 21 ------------- .../IAsyncSession.cs | 31 ------------------- .../IAsyncTransaction.cs | 19 ------------ .../IAsyncTransactionalSession.cs | 24 -------------- .../DatabaseAccessAbstractions/ISession.cs | 30 +++++++++--------- .../ITransaction.cs | 23 -------------- .../ITransactionalSession.cs | 29 ----------------- 7 files changed, 16 insertions(+), 161 deletions(-) delete mode 100644 Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncReadOnlySession.cs delete mode 100644 Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncSession.cs delete mode 100644 Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransaction.cs delete mode 100644 Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransactionalSession.cs delete mode 100644 Code/Light.SharedCore/DatabaseAccessAbstractions/ITransaction.cs delete mode 100644 Code/Light.SharedCore/DatabaseAccessAbstractions/ITransactionalSession.cs diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncReadOnlySession.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncReadOnlySession.cs deleted file mode 100644 index 6273c5e..0000000 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncReadOnlySession.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; - -namespace Light.SharedCore.DatabaseAccessAbstractions; - -/// -/// Represents an asynchronous session to the database that -/// is only used to read data. This usually means that no explicit -/// transaction is needed for this session, although implementations can support -/// it to allow using READ UNCOMMITED isolation levels for queries, for example. -/// The connection to the database can be terminated by calling -/// (or ). -/// If you want to manipulate data, use . -/// -/// -/// Conceptually, a session is identical to a "Unit of Work" as defined in "Patterns of -/// Enterprise Application Architecture" by Martin Fowler et al. It manages the connection -/// to the database and represents a transaction. Strictly speaking, a Unit of Work also needs -/// to do Change Tracking which plain ADO.NET and all Micro-ORMs do not support. For this reason, -/// we chose the term "session" instead of "Unit of Work", also because it is simpler to use in daily life. -/// -public interface IAsyncReadOnlySession : IDisposable, IAsyncDisposable; \ No newline at end of file diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncSession.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncSession.cs deleted file mode 100644 index 32c7564..0000000 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncSession.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace Light.SharedCore.DatabaseAccessAbstractions; - -/// -/// Represents an asynchronous session to a database that manipulates data. This means that -/// the implementation will either use a single dedicated transaction in the case of ADO.NET or Micro-ORMs -/// to ensure ACID properties, or the Change Tracking capabilities of a full ORM like Entity Framework Core. -/// The connection to the database can be terminated by calling -/// (or ), the underlying transaction -/// will be automatically rolled back if was not called beforehand. -/// Changes can be saved or committed to the database by calling . -/// If your session does not manipulate data, consider using the interface instead. -/// -/// -/// Conceptually, a session is identical to a "Unit of Work" as defined in "Patterns of -/// Enterprise Application Architecture" by Martin Fowler et al. It manages the connection -/// to the database and represents a transaction. Strictly speaking, a Unit of Work also needs -/// to do Change Tracking which plain ADO.NET and all Micro-ORMs do not support. For this reason, -/// we chose the term "session" instead of "Unit of Work", also because it is simpler to use in daily life. -/// -public interface IAsyncSession : IAsyncReadOnlySession -{ - /// - /// Commits all changes to the database. - /// - /// The token to cancel this asynchronous operation (optional). - Task SaveChangesAsync(CancellationToken cancellationToken = default); -} \ No newline at end of file diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransaction.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransaction.cs deleted file mode 100644 index e8ad148..0000000 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransaction.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace Light.SharedCore.DatabaseAccessAbstractions; - -/// -/// Represents an asynchronous transaction that can be committed. The transaction should always be disposed. -/// A rollback is performed automatically on when was not -/// called beforehand. -/// -public interface IAsyncTransaction : IAsyncDisposable, IDisposable -{ - /// - /// Commits the changes made during this transaction to the database. - /// - /// The token to cancel this asynchronous operation (optional). - Task CommitAsync(CancellationToken cancellationToken = default); -} \ No newline at end of file diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransactionalSession.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransactionalSession.cs deleted file mode 100644 index 4049993..0000000 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/IAsyncTransactionalSession.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace Light.SharedCore.DatabaseAccessAbstractions; - -/// -/// Represents an asynchronous session to a database that is able to create individual transactions. -/// The connection to the database can be terminated by calling . -/// Changes can be committed by first creating a transaction using -/// and later committing this transaction. -/// PLEASE REMEMBER: when your connection to the database always uses a single transaction, please -/// consider using the interface instead. Avoid nesting of several transactions -/// as the interfaces in this package do not cover trees of transactions. -/// -public interface IAsyncTransactionalSession : IAsyncReadOnlySession -{ - /// - /// Creates a new transaction. Please ensure not to call this method while another transaction - /// is still active in your current scope (to avoid nesting transactions). - /// - /// The token to cancel this asynchronous operation (optional). - ValueTask BeginTransactionAsync(CancellationToken cancellationToken = default); -} \ No newline at end of file diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs index 8b86dc9..9f90f11 100644 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs +++ b/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs @@ -1,22 +1,23 @@ using System; +using System.Threading; +using System.Threading.Tasks; namespace Light.SharedCore.DatabaseAccessAbstractions; /// /// -/// PLEASE REMEMBER: database calls should be performed asynchronously -/// by default, especially in service apps to avoid blocking threads. -/// Consider using the interface instead. +/// Represents the base interface for an asynchronous session to a database that manipulates data. This means that +/// the implementation will either use a single dedicated transaction in the case of ADO.NET or Micro-ORMs +/// to ensure ACID properties, or the change tracking capabilities of a full ORM like Entity Framework Core. /// /// -/// Represents a synchronous session to a database. This means that -/// the implementation will either use a single dedicated transaction in the case of ADO.NET or Micro-ORMs -/// to ensure ACID properties, or the Change Tracking capabilities of a full ORM like Entity Framework Core. The -/// connection to the database can be terminated by calling -/// . Changes can be saved or committed -/// to the database by calling . -/// If your session does not manipulate data, consider deriving your session abstraction from -/// the interface instead. +/// The connection to the database can be terminated by calling +/// , the underlying transaction +/// will be automatically rolled back if was not called beforehand. +/// +/// +/// If you don't want the caller to explicitly commit the changes, consider deriving your session from +/// directly. /// /// /// @@ -26,10 +27,11 @@ namespace Light.SharedCore.DatabaseAccessAbstractions; /// to do Change Tracking which plain ADO.NET and all Micro-ORMs do not support. For this reason, /// we chose the term "session" instead of "Unit of Work", also because it is simpler to use in daily life. /// -public interface ISession : IDisposable +public interface ISession : IAsyncDisposable { /// - /// Writes or commits all changes that occurred during the session to the target database. + /// Commits all changes to the database. /// - void SaveChanges(); + /// The token to cancel this asynchronous operation (optional). + Task SaveChangesAsync(CancellationToken cancellationToken = default); } \ No newline at end of file diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/ITransaction.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/ITransaction.cs deleted file mode 100644 index cae41c4..0000000 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/ITransaction.cs +++ /dev/null @@ -1,23 +0,0 @@ -using System; - -namespace Light.SharedCore.DatabaseAccessAbstractions; - -/// -/// -/// PLEASE REMEMBER: database calls should be performed asynchronously -/// by default, especially in service apps to avoid blocking threads. -/// Consider using instead. -/// -/// -/// Represents a synchronous transaction that can be committed. The transaction should always be disposed. -/// A rollback is performed automatically on when commit was not called -/// beforehand. -/// -/// -public interface ITransaction : IDisposable -{ - /// - /// Commits the changes made during this transaction to the database. - /// - void Commit(); -} \ No newline at end of file diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/ITransactionalSession.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/ITransactionalSession.cs deleted file mode 100644 index dc5b69f..0000000 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/ITransactionalSession.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; - -namespace Light.SharedCore.DatabaseAccessAbstractions; - -/// -/// -/// PLEASE REMEMBER: database calls should be performed asynchronously -/// by default, especially in service apps to avoid blocking threads. Consider using the -/// instead. Furthermore, when your connection to the -/// database always uses a single transaction, please consider using the -/// or interfaces instead. -/// -/// -/// Represents a synchronous session to a database that is able to create individual transactions. -/// The connection to the database can be terminated by calling . -/// Changes can be committed by first creating a transaction using -/// and later committing this transaction. -/// Avoid nesting of several transactions as the interfaces -/// in this package do not cover trees of transactions. -/// -/// -public interface ITransactionalSession : IDisposable -{ - /// - /// Creates a new transaction. Please ensure not to call this method while another transaction - /// is still active in your current scope (to avoid nesting transactions). - /// - ITransaction BeginTransaction(); -} \ No newline at end of file From 599e656625a0bc991bd6418e975ab24cbf26a2df Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 05:36:53 +0100 Subject: [PATCH 02/15] style: replace DotSettings with .editorconfig --- Code/.editorconfig | 2012 +++++++++++++++++++++++++ Code/Light.SharedCore.sln | 1 + Code/Light.SharedCore.sln.DotSettings | 82 - 3 files changed, 2013 insertions(+), 82 deletions(-) create mode 100644 Code/.editorconfig delete mode 100644 Code/Light.SharedCore.sln.DotSettings diff --git a/Code/.editorconfig b/Code/.editorconfig new file mode 100644 index 0000000..b5a58dc --- /dev/null +++ b/Code/.editorconfig @@ -0,0 +1,2012 @@ +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 + +[{*.csproj,*.slnx,*.xml,*.props,*.targets}] +indent_size = 2 + +[*.cs] +csharp_indent_braces = false +csharp_indent_switch_labels = true +csharp_new_line_before_catch = true +csharp_new_line_before_else = true +csharp_new_line_before_finally = true +csharp_new_line_before_members_in_object_initializers = false +csharp_new_line_before_open_brace = all +csharp_new_line_between_query_expression_clauses = true +csharp_preferred_modifier_order = public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required:suggestion +csharp_prefer_braces = true:none +csharp_preserve_single_line_blocks = true +csharp_space_after_cast = true +csharp_space_after_colon_in_inheritance_clause = true +csharp_space_after_comma = true +csharp_space_after_dot = false +csharp_space_after_keywords_in_control_flow_statements = true +csharp_space_after_semicolon_in_for_statement = true +csharp_space_around_binary_operators = before_and_after +csharp_space_before_colon_in_inheritance_clause = true +csharp_space_before_comma = false +csharp_space_before_dot = false +csharp_space_before_open_square_brackets = false +csharp_space_before_semicolon_in_for_statement = false +csharp_space_between_empty_square_brackets = false +csharp_space_between_method_call_empty_parameter_list_parentheses = false +csharp_space_between_method_call_name_and_opening_parenthesis = false +csharp_space_between_method_call_parameter_list_parentheses = false +csharp_space_between_method_declaration_empty_parameter_list_parentheses = false +csharp_space_between_method_declaration_name_and_open_parenthesis = false +csharp_space_between_method_declaration_parameter_list_parentheses = false +csharp_space_between_parentheses = false +csharp_space_between_square_brackets = false +csharp_style_expression_bodied_accessors = true:suggestion +csharp_style_expression_bodied_constructors = true:none +csharp_style_expression_bodied_methods = true:none +csharp_style_expression_bodied_properties = true:suggestion +csharp_style_namespace_declarations = file_scoped:suggestion +csharp_style_prefer_utf8_string_literals = true:suggestion +csharp_style_var_elsewhere = true:suggestion +csharp_style_var_for_built_in_types = true:suggestion +csharp_style_var_when_type_is_apparent = true:suggestion +csharp_using_directive_placement = outside_namespace:silent +dotnet_diagnostic.bc40000.severity = warning +dotnet_diagnostic.bc400005.severity = warning +dotnet_diagnostic.bc40008.severity = warning +dotnet_diagnostic.bc40056.severity = warning +dotnet_diagnostic.bc42016.severity = warning +dotnet_diagnostic.bc42024.severity = warning +dotnet_diagnostic.bc42025.severity = warning +dotnet_diagnostic.bc42104.severity = warning +dotnet_diagnostic.bc42105.severity = warning +dotnet_diagnostic.bc42106.severity = warning +dotnet_diagnostic.bc42107.severity = warning +dotnet_diagnostic.bc42304.severity = warning +dotnet_diagnostic.bc42309.severity = warning +dotnet_diagnostic.bc42322.severity = warning +dotnet_diagnostic.bc42349.severity = warning +dotnet_diagnostic.bc42353.severity = warning +dotnet_diagnostic.bc42354.severity = warning +dotnet_diagnostic.bc42355.severity = warning +dotnet_diagnostic.bc42356.severity = warning +dotnet_diagnostic.bc42358.severity = warning +dotnet_diagnostic.bc42380.severity = warning +dotnet_diagnostic.bc42504.severity = warning +dotnet_diagnostic.bc42505.severity = warning +dotnet_diagnostic.ca2252.severity = error +dotnet_diagnostic.cs0067.severity = warning +dotnet_diagnostic.cs0078.severity = warning +dotnet_diagnostic.cs0108.severity = warning +dotnet_diagnostic.cs0109.severity = warning +dotnet_diagnostic.cs0114.severity = warning +dotnet_diagnostic.cs0162.severity = warning +dotnet_diagnostic.cs0164.severity = warning +dotnet_diagnostic.cs0168.severity = warning +dotnet_diagnostic.cs0169.severity = warning +dotnet_diagnostic.cs0183.severity = warning +dotnet_diagnostic.cs0184.severity = warning +dotnet_diagnostic.cs0197.severity = warning +dotnet_diagnostic.cs0219.severity = warning +dotnet_diagnostic.cs0252.severity = warning +dotnet_diagnostic.cs0253.severity = warning +dotnet_diagnostic.cs0282.severity = warning +dotnet_diagnostic.cs0414.severity = warning +dotnet_diagnostic.cs0420.severity = warning +dotnet_diagnostic.cs0458.severity = warning +dotnet_diagnostic.cs0464.severity = warning +dotnet_diagnostic.cs0465.severity = warning +dotnet_diagnostic.cs0469.severity = warning +dotnet_diagnostic.cs0472.severity = warning +dotnet_diagnostic.cs0612.severity = warning +dotnet_diagnostic.cs0618.severity = warning +dotnet_diagnostic.cs0628.severity = warning +dotnet_diagnostic.cs0642.severity = warning +dotnet_diagnostic.cs0649.severity = warning +dotnet_diagnostic.cs0652.severity = warning +dotnet_diagnostic.cs0657.severity = warning +dotnet_diagnostic.cs0658.severity = warning +dotnet_diagnostic.cs0659.severity = warning +dotnet_diagnostic.cs0660.severity = warning +dotnet_diagnostic.cs0661.severity = warning +dotnet_diagnostic.cs0665.severity = warning +dotnet_diagnostic.cs0672.severity = warning +dotnet_diagnostic.cs0675.severity = warning +dotnet_diagnostic.cs0693.severity = warning +dotnet_diagnostic.cs0728.severity = warning +dotnet_diagnostic.cs0809.severity = warning +dotnet_diagnostic.cs1030.severity = warning +dotnet_diagnostic.cs1058.severity = warning +dotnet_diagnostic.cs1066.severity = warning +dotnet_diagnostic.cs1522.severity = warning +dotnet_diagnostic.cs1570.severity = warning +dotnet_diagnostic.cs1571.severity = warning +dotnet_diagnostic.cs1572.severity = warning +dotnet_diagnostic.cs1573.severity = warning +dotnet_diagnostic.cs1574.severity = warning +dotnet_diagnostic.cs1580.severity = warning +dotnet_diagnostic.cs1581.severity = warning +dotnet_diagnostic.cs1584.severity = warning +dotnet_diagnostic.cs1587.severity = warning +dotnet_diagnostic.cs1589.severity = warning +dotnet_diagnostic.cs1590.severity = warning +dotnet_diagnostic.cs1591.severity = warning +dotnet_diagnostic.cs1592.severity = warning +dotnet_diagnostic.cs1710.severity = warning +dotnet_diagnostic.cs1711.severity = warning +dotnet_diagnostic.cs1712.severity = warning +dotnet_diagnostic.cs1717.severity = warning +dotnet_diagnostic.cs1723.severity = warning +dotnet_diagnostic.cs1911.severity = warning +dotnet_diagnostic.cs1957.severity = warning +dotnet_diagnostic.cs1981.severity = warning +dotnet_diagnostic.cs1998.severity = warning +dotnet_diagnostic.cs4014.severity = warning +dotnet_diagnostic.cs7022.severity = warning +dotnet_diagnostic.cs7023.severity = warning +dotnet_diagnostic.cs7095.severity = warning +dotnet_diagnostic.cs8073.severity = warning +dotnet_diagnostic.cs8094.severity = warning +dotnet_diagnostic.cs8123.severity = warning +dotnet_diagnostic.cs8305.severity = warning +dotnet_diagnostic.cs8321.severity = warning +dotnet_diagnostic.cs8383.severity = warning +dotnet_diagnostic.cs8424.severity = warning +dotnet_diagnostic.cs8425.severity = warning +dotnet_diagnostic.cs8500.severity = warning +dotnet_diagnostic.cs8509.severity = warning +dotnet_diagnostic.cs8519.severity = warning +dotnet_diagnostic.cs8520.severity = warning +dotnet_diagnostic.cs8524.severity = warning +dotnet_diagnostic.cs8597.severity = warning +dotnet_diagnostic.cs8600.severity = warning +dotnet_diagnostic.cs8601.severity = warning +dotnet_diagnostic.cs8602.severity = warning +dotnet_diagnostic.cs8603.severity = warning +dotnet_diagnostic.cs8604.severity = warning +dotnet_diagnostic.cs8605.severity = warning +dotnet_diagnostic.cs8607.severity = warning +dotnet_diagnostic.cs8608.severity = warning +dotnet_diagnostic.cs8609.severity = warning +dotnet_diagnostic.cs8610.severity = warning +dotnet_diagnostic.cs8611.severity = warning +dotnet_diagnostic.cs8612.severity = warning +dotnet_diagnostic.cs8613.severity = warning +dotnet_diagnostic.cs8614.severity = warning +dotnet_diagnostic.cs8615.severity = warning +dotnet_diagnostic.cs8616.severity = warning +dotnet_diagnostic.cs8617.severity = warning +dotnet_diagnostic.cs8618.severity = warning +dotnet_diagnostic.cs8619.severity = warning +dotnet_diagnostic.cs8620.severity = warning +dotnet_diagnostic.cs8621.severity = warning +dotnet_diagnostic.cs8622.severity = warning +dotnet_diagnostic.cs8624.severity = warning +dotnet_diagnostic.cs8625.severity = warning +dotnet_diagnostic.cs8629.severity = warning +dotnet_diagnostic.cs8631.severity = warning +dotnet_diagnostic.cs8632.severity = warning +dotnet_diagnostic.cs8633.severity = warning +dotnet_diagnostic.cs8634.severity = warning +dotnet_diagnostic.cs8643.severity = warning +dotnet_diagnostic.cs8644.severity = warning +dotnet_diagnostic.cs8645.severity = warning +dotnet_diagnostic.cs8655.severity = warning +dotnet_diagnostic.cs8656.severity = warning +dotnet_diagnostic.cs8667.severity = warning +dotnet_diagnostic.cs8669.severity = warning +dotnet_diagnostic.cs8670.severity = warning +dotnet_diagnostic.cs8714.severity = warning +dotnet_diagnostic.cs8762.severity = warning +dotnet_diagnostic.cs8763.severity = warning +dotnet_diagnostic.cs8764.severity = warning +dotnet_diagnostic.cs8765.severity = warning +dotnet_diagnostic.cs8766.severity = warning +dotnet_diagnostic.cs8767.severity = warning +dotnet_diagnostic.cs8768.severity = warning +dotnet_diagnostic.cs8769.severity = warning +dotnet_diagnostic.cs8770.severity = warning +dotnet_diagnostic.cs8774.severity = warning +dotnet_diagnostic.cs8775.severity = warning +dotnet_diagnostic.cs8776.severity = warning +dotnet_diagnostic.cs8777.severity = warning +dotnet_diagnostic.cs8794.severity = warning +dotnet_diagnostic.cs8819.severity = warning +dotnet_diagnostic.cs8824.severity = warning +dotnet_diagnostic.cs8825.severity = warning +dotnet_diagnostic.cs8846.severity = warning +dotnet_diagnostic.cs8847.severity = warning +dotnet_diagnostic.cs8851.severity = warning +dotnet_diagnostic.cs8860.severity = warning +dotnet_diagnostic.cs8892.severity = warning +dotnet_diagnostic.cs8907.severity = warning +dotnet_diagnostic.cs8947.severity = warning +dotnet_diagnostic.cs8960.severity = warning +dotnet_diagnostic.cs8961.severity = warning +dotnet_diagnostic.cs8962.severity = warning +dotnet_diagnostic.cs8963.severity = warning +dotnet_diagnostic.cs8965.severity = warning +dotnet_diagnostic.cs8966.severity = warning +dotnet_diagnostic.cs8971.severity = warning +dotnet_diagnostic.cs8974.severity = warning +dotnet_diagnostic.cs8981.severity = warning +dotnet_diagnostic.cs9042.severity = warning +dotnet_diagnostic.cs9073.severity = warning +dotnet_diagnostic.cs9074.severity = warning +dotnet_diagnostic.cs9080.severity = warning +dotnet_diagnostic.cs9081.severity = warning +dotnet_diagnostic.cs9082.severity = warning +dotnet_diagnostic.cs9083.severity = warning +dotnet_diagnostic.cs9084.severity = warning +dotnet_diagnostic.cs9085.severity = warning +dotnet_diagnostic.cs9086.severity = warning +dotnet_diagnostic.cs9087.severity = warning +dotnet_diagnostic.cs9088.severity = warning +dotnet_diagnostic.cs9089.severity = warning +dotnet_diagnostic.cs9090.severity = warning +dotnet_diagnostic.cs9091.severity = warning +dotnet_diagnostic.cs9092.severity = warning +dotnet_diagnostic.cs9093.severity = warning +dotnet_diagnostic.cs9094.severity = warning +dotnet_diagnostic.cs9095.severity = warning +dotnet_diagnostic.cs9097.severity = warning +dotnet_diagnostic.cs9099.severity = warning +dotnet_diagnostic.cs9100.severity = warning +dotnet_diagnostic.cs9107.severity = warning +dotnet_diagnostic.cs9113.severity = warning +dotnet_diagnostic.cs9123.severity = warning +dotnet_diagnostic.cs9124.severity = warning +dotnet_diagnostic.cs9154.severity = warning +dotnet_diagnostic.cs9158.severity = warning +dotnet_diagnostic.cs9159.severity = warning +dotnet_diagnostic.cs9179.severity = warning +dotnet_diagnostic.cs9181.severity = warning +dotnet_diagnostic.cs9182.severity = warning +dotnet_diagnostic.cs9183.severity = warning +dotnet_diagnostic.cs9184.severity = warning +dotnet_diagnostic.cs9191.severity = warning +dotnet_diagnostic.cs9192.severity = warning +dotnet_diagnostic.cs9193.severity = warning +dotnet_diagnostic.cs9195.severity = warning +dotnet_diagnostic.cs9196.severity = warning +dotnet_diagnostic.cs9197.severity = warning +dotnet_diagnostic.cs9198.severity = warning +dotnet_diagnostic.cs9200.severity = warning +dotnet_diagnostic.cs9204.severity = warning +dotnet_diagnostic.cs9208.severity = warning +dotnet_diagnostic.cs9209.severity = warning +dotnet_diagnostic.cs9216.severity = warning +dotnet_diagnostic.cs9256.severity = warning +dotnet_diagnostic.cs9258.severity = warning +dotnet_diagnostic.cs9264.severity = warning +dotnet_diagnostic.fs0020.severity = warning +dotnet_diagnostic.fs0025.severity = warning +dotnet_diagnostic.fs0026.severity = warning +dotnet_diagnostic.fs0066.severity = warning +dotnet_diagnostic.fs0067.severity = warning +dotnet_diagnostic.fs0104.severity = warning +dotnet_diagnostic.fs0193.severity = warning +dotnet_diagnostic.fs0524.severity = warning +dotnet_diagnostic.fs1182.severity = warning +dotnet_diagnostic.fs1183.severity = warning +dotnet_diagnostic.fs3218.severity = warning +dotnet_diagnostic.fs3390.severity = warning +dotnet_diagnostic.fs3520.severity = warning +dotnet_diagnostic.wme006.severity = warning +dotnet_naming_rule.constants_rule.import_to_resharper = True +dotnet_naming_rule.constants_rule.resharper_description = Constant fields (not private) +dotnet_naming_rule.constants_rule.resharper_guid = 669e5282-fb4b-4e90-91e7-07d269d04b60 +dotnet_naming_rule.constants_rule.severity = warning +dotnet_naming_rule.constants_rule.style = upper_camel_case_style +dotnet_naming_rule.constants_rule.symbols = constants_symbols +dotnet_naming_rule.enum_member_rule.import_to_resharper = True +dotnet_naming_rule.enum_member_rule.resharper_description = Enum members +dotnet_naming_rule.enum_member_rule.resharper_guid = 8b8504e3-f0be-4c14-9103-c732f2bddc15 +dotnet_naming_rule.enum_member_rule.severity = warning +dotnet_naming_rule.enum_member_rule.style = upper_camel_case_style +dotnet_naming_rule.enum_member_rule.symbols = enum_member_symbols +dotnet_naming_rule.event_rule.import_to_resharper = True +dotnet_naming_rule.event_rule.resharper_description = Events +dotnet_naming_rule.event_rule.resharper_guid = 0c4c6401-2a1f-4db1-a21f-562f51542cf8 +dotnet_naming_rule.event_rule.severity = warning +dotnet_naming_rule.event_rule.style = upper_camel_case_style +dotnet_naming_rule.event_rule.symbols = event_symbols +dotnet_naming_rule.interfaces_rule.import_to_resharper = True +dotnet_naming_rule.interfaces_rule.resharper_description = Interfaces +dotnet_naming_rule.interfaces_rule.resharper_exclusive_prefixes_suffixes = true +dotnet_naming_rule.interfaces_rule.resharper_guid = a7a3339e-4e89-4319-9735-a9dc4cb74cc7 +dotnet_naming_rule.interfaces_rule.severity = warning +dotnet_naming_rule.interfaces_rule.style = i_upper_camel_case_style +dotnet_naming_rule.interfaces_rule.symbols = interfaces_symbols +dotnet_naming_rule.locals_rule.import_to_resharper = True +dotnet_naming_rule.locals_rule.resharper_description = Local variables +dotnet_naming_rule.locals_rule.resharper_guid = 61a991a4-d0a3-4d19-90a5-f8f4d75c30c1 +dotnet_naming_rule.locals_rule.severity = warning +dotnet_naming_rule.locals_rule.style = lower_camel_case_style_1 +dotnet_naming_rule.locals_rule.symbols = locals_symbols +dotnet_naming_rule.local_constants_rule.import_to_resharper = True +dotnet_naming_rule.local_constants_rule.resharper_description = Local constants +dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c +dotnet_naming_rule.local_constants_rule.severity = warning +dotnet_naming_rule.local_constants_rule.style = lower_camel_case_style_1 +dotnet_naming_rule.local_constants_rule.symbols = local_constants_symbols +dotnet_naming_rule.local_functions_rule.import_to_resharper = True +dotnet_naming_rule.local_functions_rule.resharper_description = Local functions +dotnet_naming_rule.local_functions_rule.resharper_guid = 76f79b1e-ece7-4df2-a322-1bd7fea25eb7 +dotnet_naming_rule.local_functions_rule.severity = warning +dotnet_naming_rule.local_functions_rule.style = upper_camel_case_style +dotnet_naming_rule.local_functions_rule.symbols = local_functions_symbols +dotnet_naming_rule.method_rule.import_to_resharper = True +dotnet_naming_rule.method_rule.resharper_description = Methods +dotnet_naming_rule.method_rule.resharper_guid = 8284009d-e743-4d89-9402-a5bf9a89b657 +dotnet_naming_rule.method_rule.severity = warning +dotnet_naming_rule.method_rule.style = upper_camel_case_style +dotnet_naming_rule.method_rule.symbols = method_symbols +dotnet_naming_rule.parameters_rule.import_to_resharper = True +dotnet_naming_rule.parameters_rule.resharper_description = Parameters +dotnet_naming_rule.parameters_rule.resharper_guid = 8a85b61a-1024-4f87-b9ef-1fdae19930a1 +dotnet_naming_rule.parameters_rule.severity = warning +dotnet_naming_rule.parameters_rule.style = lower_camel_case_style_1 +dotnet_naming_rule.parameters_rule.symbols = parameters_symbols +dotnet_naming_rule.private_constants_rule.import_to_resharper = True +dotnet_naming_rule.private_constants_rule.resharper_description = Constant fields (private) +dotnet_naming_rule.private_constants_rule.resharper_guid = 236f7aa5-7b06-43ca-bf2a-9b31bfcff09a +dotnet_naming_rule.private_constants_rule.severity = warning +dotnet_naming_rule.private_constants_rule.style = upper_camel_case_style +dotnet_naming_rule.private_constants_rule.symbols = private_constants_symbols +dotnet_naming_rule.private_instance_fields_rule.import_to_resharper = True +dotnet_naming_rule.private_instance_fields_rule.resharper_description = Instance fields (private) +dotnet_naming_rule.private_instance_fields_rule.resharper_exclusive_prefixes_suffixes = true +dotnet_naming_rule.private_instance_fields_rule.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c +dotnet_naming_rule.private_instance_fields_rule.severity = warning +dotnet_naming_rule.private_instance_fields_rule.style = lower_camel_case_style +dotnet_naming_rule.private_instance_fields_rule.symbols = private_instance_fields_symbols +dotnet_naming_rule.private_static_fields_rule.import_to_resharper = True +dotnet_naming_rule.private_static_fields_rule.resharper_description = Static fields (private) +dotnet_naming_rule.private_static_fields_rule.resharper_exclusive_prefixes_suffixes = true +dotnet_naming_rule.private_static_fields_rule.resharper_guid = f9fce829-e6f4-4cb2-80f1-5497c44f51df +dotnet_naming_rule.private_static_fields_rule.severity = warning +dotnet_naming_rule.private_static_fields_rule.style = lower_camel_case_style +dotnet_naming_rule.private_static_fields_rule.symbols = private_static_fields_symbols +dotnet_naming_rule.private_static_readonly_rule.import_to_resharper = True +dotnet_naming_rule.private_static_readonly_rule.resharper_description = Static readonly fields (private) +dotnet_naming_rule.private_static_readonly_rule.resharper_guid = 15b5b1f1-457c-4ca6-b278-5615aedc07d3 +dotnet_naming_rule.private_static_readonly_rule.severity = warning +dotnet_naming_rule.private_static_readonly_rule.style = upper_camel_case_style +dotnet_naming_rule.private_static_readonly_rule.symbols = private_static_readonly_symbols +dotnet_naming_rule.property_rule.import_to_resharper = True +dotnet_naming_rule.property_rule.resharper_description = Properties +dotnet_naming_rule.property_rule.resharper_guid = c85a0503-4de2-40f1-9cd6-a4054c05d384 +dotnet_naming_rule.property_rule.severity = warning +dotnet_naming_rule.property_rule.style = upper_camel_case_style +dotnet_naming_rule.property_rule.symbols = property_symbols +dotnet_naming_rule.public_fields_rule.import_to_resharper = True +dotnet_naming_rule.public_fields_rule.resharper_description = Instance fields (not private) +dotnet_naming_rule.public_fields_rule.resharper_guid = 53eecf85-d821-40e8-ac97-fdb734542b84 +dotnet_naming_rule.public_fields_rule.severity = warning +dotnet_naming_rule.public_fields_rule.style = upper_camel_case_style +dotnet_naming_rule.public_fields_rule.symbols = public_fields_symbols +dotnet_naming_rule.public_static_fields_rule.import_to_resharper = True +dotnet_naming_rule.public_static_fields_rule.resharper_description = Static fields (not private) +dotnet_naming_rule.public_static_fields_rule.resharper_guid = 70345118-4b40-4ece-937c-bbeb7a0b2e70 +dotnet_naming_rule.public_static_fields_rule.severity = warning +dotnet_naming_rule.public_static_fields_rule.style = upper_camel_case_style +dotnet_naming_rule.public_static_fields_rule.symbols = public_static_fields_symbols +dotnet_naming_rule.static_readonly_rule.import_to_resharper = True +dotnet_naming_rule.static_readonly_rule.resharper_description = Static readonly fields (not private) +dotnet_naming_rule.static_readonly_rule.resharper_guid = c873eafb-d57f-481d-8c93-77f6863c2f88 +dotnet_naming_rule.static_readonly_rule.severity = warning +dotnet_naming_rule.static_readonly_rule.style = upper_camel_case_style +dotnet_naming_rule.static_readonly_rule.symbols = static_readonly_symbols +dotnet_naming_rule.types_and_namespaces_rule.import_to_resharper = True +dotnet_naming_rule.types_and_namespaces_rule.resharper_description = Types and namespaces +dotnet_naming_rule.types_and_namespaces_rule.resharper_guid = a0b4bc4d-d13b-4a37-b37e-c9c6864e4302 +dotnet_naming_rule.types_and_namespaces_rule.severity = warning +dotnet_naming_rule.types_and_namespaces_rule.style = upper_camel_case_style +dotnet_naming_rule.types_and_namespaces_rule.symbols = types_and_namespaces_symbols +dotnet_naming_rule.type_parameters_rule.import_to_resharper = True +dotnet_naming_rule.type_parameters_rule.resharper_description = Type parameters +dotnet_naming_rule.type_parameters_rule.resharper_exclusive_prefixes_suffixes = true +dotnet_naming_rule.type_parameters_rule.resharper_guid = 2c62818f-621b-4425-adc9-78611099bfcb +dotnet_naming_rule.type_parameters_rule.severity = warning +dotnet_naming_rule.type_parameters_rule.style = t_upper_camel_case_style +dotnet_naming_rule.type_parameters_rule.symbols = type_parameters_symbols +dotnet_naming_rule.unity_serialized_field_rule.import_to_resharper = True +dotnet_naming_rule.unity_serialized_field_rule.resharper_description = Unity serialized field +dotnet_naming_rule.unity_serialized_field_rule.resharper_guid = 5f0fdb63-c892-4d2c-9324-15c80b22a7ef +dotnet_naming_rule.unity_serialized_field_rule.severity = warning +dotnet_naming_rule.unity_serialized_field_rule.style = lower_camel_case_style_1 +dotnet_naming_rule.unity_serialized_field_rule.symbols = unity_serialized_field_symbols +dotnet_naming_style.i_upper_camel_case_style.capitalization = pascal_case +dotnet_naming_style.i_upper_camel_case_style.required_prefix = I +dotnet_naming_style.lower_camel_case_style.capitalization = camel_case +dotnet_naming_style.lower_camel_case_style.required_prefix = _ +dotnet_naming_style.lower_camel_case_style_1.capitalization = camel_case +dotnet_naming_style.t_upper_camel_case_style.capitalization = pascal_case +dotnet_naming_style.t_upper_camel_case_style.required_prefix = T +dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case +dotnet_naming_symbols.constants_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected +dotnet_naming_symbols.constants_symbols.applicable_kinds = field +dotnet_naming_symbols.constants_symbols.required_modifiers = const +dotnet_naming_symbols.constants_symbols.resharper_applicable_kinds = constant_field +dotnet_naming_symbols.constants_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.enum_member_symbols.applicable_accessibilities = * +dotnet_naming_symbols.enum_member_symbols.applicable_kinds = +dotnet_naming_symbols.enum_member_symbols.resharper_applicable_kinds = enum_member +dotnet_naming_symbols.enum_member_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.event_symbols.applicable_accessibilities = * +dotnet_naming_symbols.event_symbols.applicable_kinds = event +dotnet_naming_symbols.event_symbols.resharper_applicable_kinds = event +dotnet_naming_symbols.event_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.interfaces_symbols.applicable_accessibilities = * +dotnet_naming_symbols.interfaces_symbols.applicable_kinds = interface +dotnet_naming_symbols.interfaces_symbols.resharper_applicable_kinds = interface +dotnet_naming_symbols.interfaces_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.locals_symbols.applicable_accessibilities = * +dotnet_naming_symbols.locals_symbols.applicable_kinds = local +dotnet_naming_symbols.locals_symbols.resharper_applicable_kinds = local_variable +dotnet_naming_symbols.locals_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.local_constants_symbols.applicable_accessibilities = * +dotnet_naming_symbols.local_constants_symbols.applicable_kinds = local +dotnet_naming_symbols.local_constants_symbols.required_modifiers = const +dotnet_naming_symbols.local_constants_symbols.resharper_applicable_kinds = local_constant +dotnet_naming_symbols.local_constants_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.local_functions_symbols.applicable_accessibilities = * +dotnet_naming_symbols.local_functions_symbols.applicable_kinds = local_function +dotnet_naming_symbols.local_functions_symbols.resharper_applicable_kinds = local_function +dotnet_naming_symbols.local_functions_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.method_symbols.applicable_accessibilities = * +dotnet_naming_symbols.method_symbols.applicable_kinds = method +dotnet_naming_symbols.method_symbols.resharper_applicable_kinds = method +dotnet_naming_symbols.method_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.parameters_symbols.applicable_accessibilities = * +dotnet_naming_symbols.parameters_symbols.applicable_kinds = parameter +dotnet_naming_symbols.parameters_symbols.resharper_applicable_kinds = parameter +dotnet_naming_symbols.parameters_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.private_constants_symbols.applicable_accessibilities = private +dotnet_naming_symbols.private_constants_symbols.applicable_kinds = field +dotnet_naming_symbols.private_constants_symbols.required_modifiers = const +dotnet_naming_symbols.private_constants_symbols.resharper_applicable_kinds = constant_field +dotnet_naming_symbols.private_constants_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.private_instance_fields_symbols.applicable_accessibilities = private +dotnet_naming_symbols.private_instance_fields_symbols.applicable_kinds = field +dotnet_naming_symbols.private_instance_fields_symbols.resharper_applicable_kinds = field, readonly_field +dotnet_naming_symbols.private_instance_fields_symbols.resharper_required_modifiers = instance +dotnet_naming_symbols.private_static_fields_symbols.applicable_accessibilities = private +dotnet_naming_symbols.private_static_fields_symbols.applicable_kinds = field +dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static +dotnet_naming_symbols.private_static_fields_symbols.resharper_applicable_kinds = field +dotnet_naming_symbols.private_static_fields_symbols.resharper_required_modifiers = static +dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private +dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field +dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = readonly, static +dotnet_naming_symbols.private_static_readonly_symbols.resharper_applicable_kinds = readonly_field +dotnet_naming_symbols.private_static_readonly_symbols.resharper_required_modifiers = static +dotnet_naming_symbols.property_symbols.applicable_accessibilities = * +dotnet_naming_symbols.property_symbols.applicable_kinds = property +dotnet_naming_symbols.property_symbols.resharper_applicable_kinds = property +dotnet_naming_symbols.property_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.public_fields_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected +dotnet_naming_symbols.public_fields_symbols.applicable_kinds = field +dotnet_naming_symbols.public_fields_symbols.resharper_applicable_kinds = field, readonly_field +dotnet_naming_symbols.public_fields_symbols.resharper_required_modifiers = instance +dotnet_naming_symbols.public_static_fields_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected +dotnet_naming_symbols.public_static_fields_symbols.applicable_kinds = field +dotnet_naming_symbols.public_static_fields_symbols.required_modifiers = static +dotnet_naming_symbols.public_static_fields_symbols.resharper_applicable_kinds = field +dotnet_naming_symbols.public_static_fields_symbols.resharper_required_modifiers = static +dotnet_naming_symbols.static_readonly_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected +dotnet_naming_symbols.static_readonly_symbols.applicable_kinds = field +dotnet_naming_symbols.static_readonly_symbols.required_modifiers = readonly, static +dotnet_naming_symbols.static_readonly_symbols.resharper_applicable_kinds = readonly_field +dotnet_naming_symbols.static_readonly_symbols.resharper_required_modifiers = static +dotnet_naming_symbols.types_and_namespaces_symbols.applicable_accessibilities = * +dotnet_naming_symbols.types_and_namespaces_symbols.applicable_kinds = class, delegate, enum, namespace, struct +dotnet_naming_symbols.types_and_namespaces_symbols.resharper_applicable_kinds = namespace, class, struct, enum, delegate +dotnet_naming_symbols.types_and_namespaces_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.type_parameters_symbols.applicable_accessibilities = * +dotnet_naming_symbols.type_parameters_symbols.applicable_kinds = type_parameter +dotnet_naming_symbols.type_parameters_symbols.resharper_applicable_kinds = type_parameter +dotnet_naming_symbols.type_parameters_symbols.resharper_required_modifiers = any +dotnet_naming_symbols.unity_serialized_field_symbols.applicable_accessibilities = * +dotnet_naming_symbols.unity_serialized_field_symbols.applicable_kinds = +dotnet_naming_symbols.unity_serialized_field_symbols.resharper_applicable_kinds = unity_serialised_field +dotnet_naming_symbols.unity_serialized_field_symbols.resharper_required_modifiers = instance +dotnet_separate_import_directive_groups = false +dotnet_sort_system_directives_first = true +dotnet_style_parentheses_in_arithmetic_binary_operators = never_if_unnecessary:none +dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:none +dotnet_style_parentheses_in_relational_binary_operators = never_if_unnecessary:none +dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion +dotnet_style_predefined_type_for_member_access = true:suggestion +dotnet_style_qualification_for_event = false:suggestion +dotnet_style_qualification_for_field = false:suggestion +dotnet_style_qualification_for_method = false:suggestion +dotnet_style_qualification_for_property = false:suggestion +dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion +resharper_alignment_tab_fill_style = use_spaces +resharper_align_first_arg_by_paren = false +resharper_align_linq_query = true +resharper_align_multiline_argument = true +resharper_align_multiline_array_and_object_initializer = false +resharper_align_multiline_array_initializer = true +resharper_align_multiline_binary_patterns = true +resharper_align_multiline_comments = true +resharper_align_multiline_ctor_init = true +resharper_align_multiline_expression_braces = false +resharper_align_multiline_extends_list = true +resharper_align_multiline_for_stmt = true +resharper_align_multiline_implements_list = true +resharper_align_multiline_list_pattern = false +resharper_align_multiline_parameter = true +resharper_align_multiline_property_pattern = false +resharper_align_multiline_statement_conditions = true +resharper_align_multiline_switch_expression = false +resharper_align_multiline_type_argument = true +resharper_align_multiline_type_parameter = true +resharper_align_multiline_type_parameter_constraints = true +resharper_align_multiline_type_parameter_list = true +resharper_align_multiple_declaration = true +resharper_align_ternary = align_not_nested +resharper_align_tuple_components = true +resharper_allow_alias = true +resharper_allow_comment_after_lbrace = false +resharper_allow_far_alignment = false +resharper_allow_high_precedence_app_parens = true +resharper_always_use_end_of_line_brace_style = false +resharper_apply_auto_detected_rules = false +resharper_apply_on_completion = false +resharper_arguments_anonymous_function = positional +resharper_arguments_literal = positional +resharper_arguments_named = positional +resharper_arguments_other = positional +resharper_arguments_skip_single = false +resharper_arguments_string_literal = positional +resharper_attribute_style = do_not_touch +resharper_autodetect_indent_settings = true +resharper_blank_lines_after_access_specifier = 0 +resharper_blank_lines_after_block_statements = 1 +resharper_blank_lines_after_case = 0 +resharper_blank_lines_after_control_transfer_statements = 0 +resharper_blank_lines_after_file_scoped_namespace_directive = 1 +resharper_blank_lines_after_imports = 1 +resharper_blank_lines_after_multiline_statements = 0 +resharper_blank_lines_after_options = 1 +resharper_blank_lines_after_start_comment = 1 +resharper_blank_lines_after_using_list = 1 +resharper_blank_lines_around_accessor = 0 +resharper_blank_lines_around_auto_property = 1 +resharper_blank_lines_around_block_case_section = 0 +resharper_blank_lines_around_class_definition = 1 +resharper_blank_lines_around_different_module_member_kinds = 1 +resharper_blank_lines_around_field = 1 +resharper_blank_lines_around_function_declaration = 0 +resharper_blank_lines_around_function_definition = 1 +resharper_blank_lines_around_global_attribute = 0 +resharper_blank_lines_around_invocable = 1 +resharper_blank_lines_around_local_method = 1 +resharper_blank_lines_around_multiline_case_section = 0 +resharper_blank_lines_around_multiline_module_members = 1 +resharper_blank_lines_around_namespace = 1 +resharper_blank_lines_around_other_declaration = 0 +resharper_blank_lines_around_property = 1 +resharper_blank_lines_around_razor_functions = 1 +resharper_blank_lines_around_razor_helpers = 1 +resharper_blank_lines_around_razor_sections = 1 +resharper_blank_lines_around_region = 1 +resharper_blank_lines_around_single_line_accessor = 0 +resharper_blank_lines_around_single_line_auto_property = 0 +resharper_blank_lines_around_single_line_field = 0 +resharper_blank_lines_around_single_line_function_definition = 0 +resharper_blank_lines_around_single_line_invocable = 0 +resharper_blank_lines_around_single_line_local_method = 0 +resharper_blank_lines_around_single_line_module_member = 0 +resharper_blank_lines_around_single_line_property = 0 +resharper_blank_lines_around_single_line_type = 1 +resharper_blank_lines_around_type = 1 +resharper_blank_lines_before_access_specifier = 1 +resharper_blank_lines_before_block_statements = 0 +resharper_blank_lines_before_case = 0 +resharper_blank_lines_before_control_transfer_statements = 0 +resharper_blank_lines_before_first_module_member_in_nested_module = 0 +resharper_blank_lines_before_first_module_member_in_top_level_module = 1 +resharper_blank_lines_before_multiline_statements = 0 +resharper_blank_lines_before_single_line_comment = 0 +resharper_blank_lines_inside_namespace = 0 +resharper_blank_lines_inside_region = 1 +resharper_blank_lines_inside_type = 0 +resharper_blank_line_after_pi = true +resharper_blank_line_around_top_level_modules = 2 +resharper_braces_redundant = true +resharper_break_template_declaration = line_break +resharper_builtin_type_apply_to_native_integer = false +resharper_can_use_global_alias = true +resharper_configure_await_analysis_mode = disabled +resharper_continuous_indent_multiplier = 1 +resharper_continuous_line_indent = single +resharper_csharp_align_multiline_binary_expressions_chain = true +resharper_csharp_align_multiline_calls_chain = false +resharper_csharp_align_multiline_expression = false +resharper_csharp_empty_block_style = together_same_line +resharper_csharp_keep_nontrivial_alias = false +resharper_csharp_max_enum_members_on_line = 1 +resharper_csharp_max_line_length = 120 +resharper_csharp_new_line_before_while = false +resharper_csharp_outdent_commas = true +resharper_csharp_outdent_dots = true +resharper_csharp_prefer_qualified_reference = false +resharper_csharp_space_after_unary_operator = false +resharper_csharp_stick_comment = false +resharper_csharp_wrap_after_declaration_lpar = true +resharper_csharp_wrap_after_invocation_lpar = true +resharper_csharp_wrap_arguments_style = chop_if_long +resharper_csharp_wrap_before_declaration_rpar = true +resharper_csharp_wrap_before_first_type_parameter_constraint = true +resharper_csharp_wrap_before_invocation_rpar = true +resharper_csharp_wrap_before_ternary_opsigns = false +resharper_csharp_wrap_extends_list_style = chop_if_long +resharper_csharp_wrap_lines = true +resharper_csharp_wrap_multiple_declaration_style = chop_always +resharper_csharp_wrap_parameters_style = chop_if_long +resharper_cxxcli_property_declaration_braces = next_line +resharper_declaration_body_on_the_same_line = if_owner_is_single_line +resharper_default_exception_variable_name = e +resharper_default_value_when_type_evident = default_literal +resharper_default_value_when_type_not_evident = default_literal +resharper_delete_quotes_from_solid_values = false +resharper_disable_blank_line_changes = false +resharper_disable_formatter = false +resharper_disable_indenter = false +resharper_disable_int_align = false +resharper_disable_line_break_changes = false +resharper_disable_line_break_removal = false +resharper_disable_space_changes = false +resharper_disable_space_changes_before_trailing_comment = false +resharper_dont_remove_extra_blank_lines = false +resharper_enable_slate_format = true +resharper_enable_wrapping = false +resharper_enforce_line_ending_style = false +resharper_event_handler_pattern_long = $object$On$event$ +resharper_event_handler_pattern_short = On$event$ +resharper_export_declaration_braces = next_line +resharper_expression_braces = inside +resharper_expression_pars = inside +resharper_extra_spaces = remove_all +resharper_force_attribute_style = separate +resharper_force_chop_compound_do_expression = false +resharper_force_chop_compound_if_expression = false +resharper_force_chop_compound_while_expression = false +resharper_formatter_off_tag = @formatter:off +resharper_formatter_on_tag = @formatter:on +resharper_formatter_tags_accept_regexp = false +resharper_formatter_tags_enabled = true +resharper_format_leading_spaces_decl = false +resharper_free_block_braces = next_line +resharper_function_declaration_return_type_style = do_not_change +resharper_function_definition_return_type_style = do_not_change +resharper_generator_mode = false +resharper_html_attribute_indent = align_by_first_attribute +resharper_html_linebreak_before_elements = body, div, p, form, h1, h2, h3 +resharper_html_linebreak_before_multiline_elements = true +resharper_html_max_blank_lines_between_tags = 2 +resharper_html_max_line_length = 120 +resharper_html_pi_attribute_style = on_single_line +resharper_html_space_before_self_closing = false +resharper_html_wrap_lines = true +resharper_ignore_space_preservation = false +resharper_include_prefix_comment_in_indent = false +resharper_indent_access_specifiers_from_class = false +resharper_indent_aligned_ternary = true +resharper_indent_anonymous_method_block = false +resharper_indent_braces_inside_statement_conditions = true +resharper_indent_break_from_case = true +resharper_indent_case_from_select = true +resharper_indent_class_members_from_access_specifiers = false +resharper_indent_comment = true +resharper_indent_export_declaration_members = true +resharper_indent_goto_labels = true +resharper_indent_inside_namespace = true +resharper_indent_invocation_pars = inside +resharper_indent_member_initializer_list = true +resharper_indent_method_decl_pars = inside +resharper_indent_nested_fixed_stmt = false +resharper_indent_nested_foreach_stmt = true +resharper_indent_nested_for_stmt = true +resharper_indent_nested_lock_stmt = false +resharper_indent_nested_usings_stmt = false +resharper_indent_nested_while_stmt = true +resharper_indent_pars = inside +resharper_indent_preprocessor_directives = none +resharper_indent_preprocessor_if = no_indent +resharper_indent_preprocessor_other = no_indent +resharper_indent_preprocessor_region = no_indent +resharper_indent_primary_constructor_decl_pars = inside +resharper_indent_raw_literal_string = align +resharper_indent_statement_pars = inside +resharper_indent_typearg_angles = inside +resharper_indent_typeparam_angles = inside +resharper_indent_type_constraints = true +resharper_indent_wrapped_function_names = false +resharper_instance_members_qualify_declared_in = this_class, base_class +resharper_int_align = false +resharper_int_align_bitfield_sizes = false +resharper_int_align_comments = false +resharper_int_align_declaration_names = false +resharper_int_align_enum_initializers = false +resharper_int_align_eq = false +resharper_int_align_fix_in_adjacent = true +resharper_keep_blank_lines_in_code = 2 +resharper_keep_blank_lines_in_declarations = 2 +resharper_keep_existing_attribute_arrangement = false +resharper_keep_existing_declaration_parens_arrangement = true +resharper_keep_existing_embedded_arrangement = true +resharper_keep_existing_enum_arrangement = true +resharper_keep_existing_expr_member_arrangement = true +resharper_keep_existing_invocation_parens_arrangement = true +resharper_keep_existing_line_break_before_declaration_body = true +resharper_keep_existing_list_patterns_arrangement = true +resharper_keep_existing_primary_constructor_declaration_parens_arrangement = true +resharper_keep_existing_property_patterns_arrangement = true +resharper_keep_existing_switch_expression_arrangement = false +resharper_keep_max_blank_line_around_module_members = 2 +resharper_keep_user_linebreaks = true +resharper_keep_user_wrapping = true +resharper_labeled_statement_style = line_break +resharper_linebreaks_around_razor_statements = true +resharper_linebreaks_inside_tags_for_elements_longer_than = 2147483647 +resharper_linebreaks_inside_tags_for_elements_with_child_elements = true +resharper_linebreaks_inside_tags_for_multiline_elements = true +resharper_linebreak_before_all_elements = false +resharper_linebreak_before_singleline_elements = false +resharper_line_break_after_colon_in_member_initializer_lists = do_not_change +resharper_line_break_after_comma_in_member_initializer_lists = false +resharper_line_break_after_deref_in_trailing_return_types = do_not_change +resharper_line_break_after_init_statement = do_not_change +resharper_line_break_after_type_repr_access_modifier = true +resharper_line_break_before_comma_in_member_initializer_lists = false +resharper_line_break_before_deref_in_trailing_return_types = do_not_change +resharper_line_break_before_function_try_block = do_not_change +resharper_line_break_before_requires_clause = do_not_change +resharper_linkage_specification_braces = end_of_line +resharper_linkage_specification_indentation = none +resharper_local_function_body = expression_body +resharper_macro_block_begin = +resharper_macro_block_end = +resharper_max_array_initializer_elements_on_line = 10000 +resharper_max_attribute_length_for_same_line = 90 +resharper_max_formal_parameters_on_line = 10000 +resharper_max_initializer_elements_on_line = 10000 +resharper_max_invocation_arguments_on_line = 10000 +resharper_max_primary_constructor_parameters_on_line = 10000 +resharper_member_initializer_list_style = do_not_change +resharper_namespace_declaration_braces = next_line +resharper_namespace_indentation = all +resharper_nested_ternary_style = compact +resharper_never_outdent_pipe_operators = true +resharper_new_line_before_catch = true +resharper_new_line_before_else = true +resharper_new_line_before_enumerators = true +resharper_normalize_tag_names = false +resharper_no_indent_inside_elements = html, body, thead, tbody, tfoot +resharper_no_indent_inside_if_element_longer_than = 200 +resharper_null_checking_pattern_style = not_null_pattern +resharper_object_creation_when_type_evident = target_typed +resharper_object_creation_when_type_not_evident = explicitly_typed +resharper_old_engine = false +resharper_outdent_binary_operators = true +resharper_outdent_binary_ops = true +resharper_outdent_binary_pattern_ops = true +resharper_outdent_namespace_member = false +resharper_outdent_statement_labels = false +resharper_outdent_ternary_ops = false +resharper_parentheses_non_obvious_operations = none, shift, bitwise_and, bitwise_exclusive_or, bitwise_inclusive_or, bitwise +resharper_parentheses_redundancy_style = remove_if_not_clarifies_precedence +resharper_parentheses_same_type_operations = false +resharper_pi_attributes_indent = align_by_first_attribute +resharper_place_accessorholder_attribute_on_same_line = false +resharper_place_accessor_attribute_on_same_line = if_owner_is_single_line +resharper_place_comments_at_first_column = false +resharper_place_constructor_initializer_on_same_line = true +resharper_place_event_attribute_on_same_line = false +resharper_place_expr_accessor_on_single_line = if_owner_is_single_line +resharper_place_expr_method_on_single_line = if_owner_is_single_line +resharper_place_expr_property_on_single_line = if_owner_is_single_line +resharper_place_field_attribute_on_same_line = false +resharper_place_linq_into_on_new_line = false +resharper_place_method_attribute_on_same_line = false +resharper_place_namespace_definitions_on_same_line = false +resharper_place_primary_constructor_initializer_on_same_line = true +resharper_place_property_attribute_on_same_line = false +resharper_place_record_field_attribute_on_same_line = true +resharper_place_simple_case_statement_on_same_line = if_owner_is_single_line +resharper_place_simple_embedded_statement_on_same_line = false +resharper_place_simple_initializer_on_single_line = true +resharper_place_simple_list_pattern_on_single_line = true +resharper_place_simple_property_pattern_on_single_line = true +resharper_place_simple_switch_expression_on_single_line = false +resharper_place_type_attribute_on_same_line = false +resharper_place_type_constraints_on_same_line = true +resharper_prefer_explicit_discard_declaration = false +resharper_prefer_separate_deconstructed_variables_declaration = false +resharper_prefer_wrap_around_eq = default +resharper_preserve_spaces_inside_tags = pre, textarea +resharper_qualified_using_at_nested_scope = false +resharper_quote_style = doublequoted +resharper_razor_prefer_qualified_reference = true +resharper_remove_blank_lines_near_braces = false +resharper_remove_blank_lines_near_braces_in_code = true +resharper_remove_blank_lines_near_braces_in_declarations = true +resharper_remove_only_unused_aliases = true +resharper_remove_spaces_on_blank_lines = true +resharper_remove_this_qualifier = true +resharper_remove_unused_only_aliases = false +resharper_requires_expression_braces = next_line +resharper_resx_attribute_indent = single_indent +resharper_resx_indent_child_elements = OneIndent +resharper_resx_indent_text = OneIndent +resharper_resx_linebreak_before_elements = +resharper_resx_linebreak_before_multiline_elements = true +resharper_resx_max_blank_lines_between_tags = 0 +resharper_resx_max_line_length = 2147483647 +resharper_resx_pi_attribute_style = do_not_touch +resharper_resx_space_before_self_closing = false +resharper_resx_wrap_lines = false +resharper_resx_wrap_tags_and_pi = false +resharper_resx_wrap_text = false +resharper_shaderlab_brace_style = next_line +resharper_shaderlab_max_line_length = 120 +resharper_shaderlab_wrap_lines = true +resharper_show_autodetect_configure_formatting_tip = false +resharper_simple_block_style = do_not_change +resharper_simple_case_statement_style = do_not_change +resharper_simple_embedded_statement_style = do_not_change +resharper_slate_brackets_indent = inside +resharper_slate_brackets_wrap = chop_always +resharper_slate_wrap_before_bracket = true +resharper_slate_wrap_chained_binary_expression = chop_if_long +resharper_slate_wrap_chained_member_access = chop_if_long +resharper_sort_attributes = false +resharper_sort_class_selectors = false +resharper_sort_usings = true +resharper_spaces_around_eq_in_attribute = false +resharper_spaces_around_eq_in_pi_attribute = false +resharper_spaces_inside_tags = false +resharper_space_after_attributes = true +resharper_space_after_attribute_target_colon = true +resharper_space_after_colon = true +resharper_space_after_colon_in_bitfield_declarator = true +resharper_space_after_colon_in_case = true +resharper_space_after_colon_in_inheritance_clause = true +resharper_space_after_comma = true +resharper_space_after_ellipsis_in_parameter_pack = true +resharper_space_after_for_colon = true +resharper_space_after_keywords_in_control_flow_statements = true +resharper_space_after_last_attribute = false +resharper_space_after_last_pi_attribute = false +resharper_space_after_operator_keyword = true +resharper_space_after_operator_not = false +resharper_space_after_ptr_in_data_member = true +resharper_space_after_ptr_in_data_members = false +resharper_space_after_ptr_in_method = true +resharper_space_after_ptr_in_nested_declarator = false +resharper_space_after_ref_in_data_member = true +resharper_space_after_ref_in_data_members = false +resharper_space_after_ref_in_method = true +resharper_space_after_semicolon_in_for_statement = true +resharper_space_after_slate_operator = true +resharper_space_after_ternary_colon = true +resharper_space_after_ternary_quest = true +resharper_space_after_triple_slash = true +resharper_space_after_type_parameter_constraint_colon = true +resharper_space_around_additive_op = true +resharper_space_around_alias_eq = true +resharper_space_around_assignment_op = true +resharper_space_around_assignment_operator = true +resharper_space_around_deref_in_trailing_return_type = true +resharper_space_around_lambda_arrow = true +resharper_space_around_member_access_operator = false +resharper_space_around_relational_op = true +resharper_space_around_shift_op = true +resharper_space_around_stmt_colon = true +resharper_space_around_ternary_operator = true +resharper_space_before_array_rank_parentheses = false +resharper_space_before_attribute_target_colon = false +resharper_space_before_checked_parentheses = false +resharper_space_before_colon = false +resharper_space_before_colon_in_bitfield_declarator = true +resharper_space_before_colon_in_case = false +resharper_space_before_colon_in_inheritance_clause = true +resharper_space_before_comma = false +resharper_space_before_default_parentheses = false +resharper_space_before_ellipsis_in_parameter_pack = false +resharper_space_before_empty_invocation_parentheses = false +resharper_space_before_empty_method_parentheses = false +resharper_space_before_for_colon = true +resharper_space_before_initializer_braces = false +resharper_space_before_invocation_parentheses = false +resharper_space_before_label_colon = false +resharper_space_before_lambda_parentheses = false +resharper_space_before_method_parentheses = false +resharper_space_before_nameof_parentheses = false +resharper_space_before_new_parentheses = true +resharper_space_before_nullable_mark = false +resharper_space_before_open_square_brackets = false +resharper_space_before_pointer_asterik_declaration = false +resharper_space_before_postfix_operator = false +resharper_space_before_ptr_in_abstract_decl = false +resharper_space_before_ptr_in_data_member = false +resharper_space_before_ptr_in_data_members = true +resharper_space_before_ptr_in_method = false +resharper_space_before_ref_in_abstract_decl = false +resharper_space_before_ref_in_data_member = false +resharper_space_before_ref_in_data_members = true +resharper_space_before_ref_in_method = false +resharper_space_before_semicolon = false +resharper_space_before_semicolon_in_for_statement = false +resharper_space_before_singleline_accessorholder = true +resharper_space_before_sizeof_parentheses = false +resharper_space_before_template_args = false +resharper_space_before_template_params = true +resharper_space_before_ternary_colon = true +resharper_space_before_ternary_quest = true +resharper_space_before_trailing_comment = true +resharper_space_before_typeof_parentheses = false +resharper_space_before_type_argument_angle = false +resharper_space_before_type_parameter_angle = false +resharper_space_before_type_parameter_constraint_colon = true +resharper_space_before_type_parameter_parentheses = true +resharper_space_between_accessors_in_singleline_property = true +resharper_space_between_attribute_sections = true +resharper_space_between_closing_angle_brackets_in_template_args = false +resharper_space_between_keyword_and_expression = true +resharper_space_between_keyword_and_type = true +resharper_space_between_method_call_empty_parameter_list_parentheses = false +resharper_space_between_method_call_name_and_opening_parenthesis = false +resharper_space_between_method_call_parameter_list_parentheses = false +resharper_space_between_method_declaration_empty_parameter_list_parentheses = false +resharper_space_between_method_declaration_name_and_open_parenthesis = false +resharper_space_between_method_declaration_parameter_list_parentheses = false +resharper_space_between_parentheses_of_control_flow_statements = false +resharper_space_between_square_brackets = false +resharper_space_between_typecast_parentheses = false +resharper_space_in_singleline_accessorholder = true +resharper_space_in_singleline_anonymous_method = true +resharper_space_in_singleline_method = true +resharper_space_near_postfix_and_prefix_op = false +resharper_space_within_array_initialization_braces = false +resharper_space_within_array_rank_empty_parentheses = false +resharper_space_within_array_rank_parentheses = false +resharper_space_within_attribute_angles = false +resharper_space_within_checked_parentheses = false +resharper_space_within_declaration_parentheses = false +resharper_space_within_default_parentheses = false +resharper_space_within_empty_blocks = false +resharper_space_within_empty_braces = true +resharper_space_within_empty_initializer_braces = false +resharper_space_within_empty_invocation_parentheses = false +resharper_space_within_empty_method_parentheses = false +resharper_space_within_empty_template_params = false +resharper_space_within_expression_parentheses = false +resharper_space_within_initializer_braces = false +resharper_space_within_invocation_parentheses = false +resharper_space_within_method_parentheses = false +resharper_space_within_nameof_parentheses = false +resharper_space_within_new_parentheses = false +resharper_space_within_parentheses = false +resharper_space_within_single_line_array_initializer_braces = true +resharper_space_within_sizeof_parentheses = false +resharper_space_within_slice_pattern = true +resharper_space_within_template_args = false +resharper_space_within_template_params = false +resharper_space_within_tuple_parentheses = false +resharper_space_within_typeof_parentheses = false +resharper_space_within_type_argument_angles = false +resharper_space_within_type_parameter_angles = false +resharper_space_within_type_parameter_parentheses = false +resharper_special_else_if_treatment = true +resharper_static_members_qualify_members = none +resharper_static_members_qualify_with = declared_type +resharper_support_vs_event_naming_pattern = true +resharper_T4_max_line_length = 120 +resharper_T4_wrap_lines = true +resharper_toplevel_function_declaration_return_type_style = do_not_change +resharper_toplevel_function_definition_return_type_style = do_not_change +resharper_trailing_comma_in_multiline_lists = false +resharper_trailing_comma_in_singleline_lists = false +resharper_treat_case_statement_with_break_as_simple = true +resharper_use_continuous_indent_inside_initializer_braces = true +resharper_use_continuous_indent_inside_parens = true +resharper_use_continuous_line_indent_in_expression_braces = false +resharper_use_continuous_line_indent_in_method_pars = false +resharper_use_indents_from_main_language_in_file = true +resharper_use_indent_from_previous_element = true +resharper_use_indent_from_vs = false +resharper_use_old_engine = false +resharper_use_roslyn_logic_for_evident_types = false +resharper_wrap_after_binary_opsign = true +resharper_wrap_after_dot = false +resharper_wrap_after_dot_in_method_calls = false +resharper_wrap_after_expression_lbrace = true +resharper_wrap_after_primary_constructor_declaration_lpar = true +resharper_wrap_after_property_in_chained_method_calls = false +resharper_wrap_around_elements = true +resharper_wrap_array_initializer_style = chop_if_long +resharper_wrap_base_clause_style = wrap_if_long +resharper_wrap_before_arrow_with_expressions = false +resharper_wrap_before_binary_opsign = false +resharper_wrap_before_binary_pattern_op = false +resharper_wrap_before_colon = false +resharper_wrap_before_comma = false +resharper_wrap_before_comma_in_base_clause = false +resharper_wrap_before_declaration_lpar = false +resharper_wrap_before_eq = false +resharper_wrap_before_expression_rbrace = true +resharper_wrap_before_extends_colon = false +resharper_wrap_before_first_method_call = true +resharper_wrap_before_invocation_lpar = false +resharper_wrap_before_linq_expression = true +resharper_wrap_before_primary_constructor_declaration_lpar = false +resharper_wrap_before_primary_constructor_declaration_rpar = true +resharper_wrap_before_type_parameter_langle = false +resharper_wrap_braced_init_list_style = wrap_if_long +resharper_wrap_chained_binary_expressions = chop_if_long +resharper_wrap_chained_binary_patterns = chop_if_long +resharper_wrap_chained_method_calls = wrap_if_long +resharper_wrap_ctor_initializer_style = wrap_if_long +resharper_wrap_enumeration_style = chop_if_long +resharper_wrap_enum_declaration = chop_always +resharper_wrap_for_stmt_header_style = chop_if_long +resharper_wrap_list_pattern = chop_if_long +resharper_wrap_multiple_type_parameter_constraints_style = chop_if_long +resharper_wrap_object_and_collection_initializer_style = chop_if_long +resharper_wrap_primary_constructor_parameters_style = chop_if_long +resharper_wrap_property_pattern = chop_if_long +resharper_wrap_switch_expression = chop_always +resharper_wrap_ternary_expr_style = chop_if_long +resharper_wrap_verbatim_interpolated_strings = no_wrap +resharper_xmldoc_attribute_indent = align_by_first_attribute +resharper_xmldoc_indent_child_elements = RemoveIndent +resharper_xmldoc_indent_text = RemoveIndent +resharper_xmldoc_insert_final_newline = false +resharper_xmldoc_linebreak_before_elements = summary, remarks, example, returns, param, typeparam, value, para +resharper_xmldoc_linebreak_before_multiline_elements = false +resharper_xmldoc_max_blank_lines_between_tags = 0 +resharper_xmldoc_max_line_length = 150 +resharper_xmldoc_pi_attribute_style = do_not_touch +resharper_xmldoc_space_before_self_closing = true +resharper_xmldoc_wrap_lines = false +resharper_xmldoc_wrap_tags_and_pi = false +resharper_xmldoc_wrap_text = true +resharper_xml_attribute_indent = align_by_first_attribute +resharper_xml_indent_child_elements = OneIndent +resharper_xml_indent_text = OneIndent +resharper_xml_linebreak_before_elements = +resharper_xml_linebreak_before_multiline_elements = true +resharper_xml_max_blank_lines_between_tags = 2 +resharper_xml_max_line_length = 120 +resharper_xml_pi_attribute_style = do_not_touch +resharper_xml_space_before_self_closing = true +resharper_xml_wrap_lines = true +resharper_xml_wrap_tags_and_pi = true +resharper_xml_wrap_text = false + +# ReSharper inspection severities +resharper_access_rights_in_text_highlighting = warning +resharper_access_to_disposed_closure_highlighting = warning +resharper_access_to_for_each_variable_in_closure_highlighting = warning +resharper_access_to_modified_closure_highlighting = warning +resharper_access_to_static_member_via_derived_type_highlighting = warning +resharper_address_of_marshal_by_ref_object_highlighting = warning +resharper_all_underscore_local_parameter_name_highlighting = warning +resharper_angular_html_banana_highlighting = warning +resharper_annotate_can_be_null_parameter_highlighting = none +resharper_annotate_can_be_null_type_member_highlighting = none +resharper_annotate_not_null_parameter_highlighting = none +resharper_annotate_not_null_type_member_highlighting = none +resharper_annotation_conflict_in_hierarchy_highlighting = warning +resharper_annotation_redundancy_at_value_type_highlighting = warning +resharper_annotation_redundancy_in_hierarchy_highlighting = warning +resharper_anonymous_object_destructuring_problem_highlighting = warning +resharper_append_to_collection_expression_highlighting = suggestion +resharper_arguments_style_anonymous_function_highlighting = none +resharper_arguments_style_literal_highlighting = none +resharper_arguments_style_named_expression_highlighting = none +resharper_arguments_style_other_highlighting = none +resharper_arguments_style_string_literal_highlighting = none +resharper_arrange_attributes_highlighting = none +resharper_arrange_default_value_when_type_evident_highlighting = hint +resharper_arrange_default_value_when_type_not_evident_highlighting = hint +resharper_arrange_local_function_body_highlighting = none +resharper_arrange_null_checking_pattern_highlighting = hint +resharper_arrange_object_creation_when_type_evident_highlighting = hint +resharper_arrange_object_creation_when_type_not_evident_highlighting = hint +resharper_arrange_redundant_parentheses_highlighting = hint +resharper_arrange_static_member_qualifier_highlighting = hint +resharper_arrange_this_qualifier_highlighting = hint +resharper_arrange_trailing_comma_in_multiline_lists_highlighting = hint +resharper_arrange_trailing_comma_in_singleline_lists_highlighting = hint +resharper_arrange_var_keywords_in_deconstructing_declaration_highlighting = hint +resharper_asp_content_placeholder_not_resolved_highlighting = error +resharper_asp_custom_page_parser_filter_type_highlighting = warning +resharper_asp_dead_code_highlighting = warning +resharper_asp_entity_highlighting = warning +resharper_asp_image_highlighting = warning +resharper_asp_invalid_control_type_highlighting = error +resharper_asp_not_resolved_highlighting = error +resharper_asp_ods_method_reference_resolve_error_highlighting = error +resharper_asp_resolve_warning_highlighting = warning +resharper_asp_skin_not_resolved_highlighting = error +resharper_asp_tag_attribute_with_optional_value_highlighting = warning +resharper_asp_theme_not_resolved_highlighting = error +resharper_asp_unused_register_directive_highlighting_highlighting = warning +resharper_asp_warning_highlighting = warning +resharper_assignment_instead_of_discard_highlighting = warning +resharper_assignment_in_conditional_expression_highlighting = warning +resharper_assignment_is_fully_discarded_highlighting = warning +resharper_assign_null_to_not_null_attribute_highlighting = warning +resharper_asxx_path_error_highlighting = warning +resharper_async_iterator_invocation_without_await_foreach_highlighting = warning +resharper_async_void_lambda_highlighting = warning +resharper_async_void_method_highlighting = suggestion +resharper_auto_property_can_be_made_get_only_global_highlighting = suggestion +resharper_auto_property_can_be_made_get_only_local_highlighting = suggestion +resharper_bad_attribute_brackets_spaces_highlighting = none +resharper_bad_braces_spaces_highlighting = none +resharper_bad_child_statement_indent_highlighting = warning +resharper_bad_colon_spaces_highlighting = none +resharper_bad_comma_spaces_highlighting = none +resharper_bad_control_braces_indent_highlighting = suggestion +resharper_bad_control_braces_line_breaks_highlighting = none +resharper_bad_declaration_braces_indent_highlighting = none +resharper_bad_declaration_braces_line_breaks_highlighting = none +resharper_bad_empty_braces_line_breaks_highlighting = none +resharper_bad_expression_braces_indent_highlighting = none +resharper_bad_expression_braces_line_breaks_highlighting = none +resharper_bad_generic_brackets_spaces_highlighting = none +resharper_bad_indent_highlighting = none +resharper_bad_linq_line_breaks_highlighting = none +resharper_bad_list_line_breaks_highlighting = none +resharper_bad_member_access_spaces_highlighting = none +resharper_bad_namespace_braces_indent_highlighting = none +resharper_bad_parens_line_breaks_highlighting = none +resharper_bad_parens_spaces_highlighting = none +resharper_bad_preprocessor_indent_highlighting = none +resharper_bad_semicolon_spaces_highlighting = none +resharper_bad_spaces_after_keyword_highlighting = none +resharper_bad_square_brackets_spaces_highlighting = none +resharper_bad_switch_braces_indent_highlighting = none +resharper_bad_symbol_spaces_highlighting = none +resharper_base_member_has_params_highlighting = warning +resharper_base_method_call_with_default_parameter_highlighting = warning +resharper_base_object_equals_is_object_equals_highlighting = warning +resharper_base_object_get_hash_code_call_in_get_hash_code_highlighting = warning +resharper_bitwise_operator_on_enum_without_flags_highlighting = warning +resharper_blazor_editor_required_highlighting = warning +resharper_built_in_type_reference_style_for_member_access_highlighting = hint +resharper_built_in_type_reference_style_highlighting = hint +resharper_by_ref_argument_is_volatile_field_highlighting = warning +resharper_cannot_apply_equality_operator_to_type_highlighting = warning +resharper_can_replace_cast_with_lambda_return_type_highlighting = hint +resharper_can_replace_cast_with_shorter_type_argument_highlighting = suggestion +resharper_can_replace_cast_with_type_argument_highlighting = hint +resharper_can_replace_cast_with_variable_type_highlighting = hint +resharper_can_simplify_dictionary_lookup_with_try_add_highlighting = suggestion +resharper_can_simplify_dictionary_lookup_with_try_get_value_highlighting = suggestion +resharper_can_simplify_dictionary_removing_with_single_call_highlighting = suggestion +resharper_can_simplify_dictionary_try_get_value_with_get_value_or_default_highlighting = suggestion +resharper_can_simplify_is_assignable_from_highlighting = suggestion +resharper_can_simplify_is_instance_of_type_highlighting = suggestion +resharper_can_simplify_set_adding_with_single_call_highlighting = suggestion +resharper_can_simplify_string_escape_sequence_highlighting = hint +resharper_captured_primary_constructor_parameter_is_mutable_highlighting = warning +resharper_center_tag_is_obsolete_highlighting = warning +resharper_change_field_type_to_system_threading_lock_highlighting = suggestion +resharper_check_for_reference_equality_instead_1_highlighting = suggestion +resharper_check_for_reference_equality_instead_2_highlighting = suggestion +resharper_check_for_reference_equality_instead_3_highlighting = suggestion +resharper_check_for_reference_equality_instead_4_highlighting = suggestion +resharper_check_namespace_highlighting = warning +resharper_class_cannot_be_instantiated_highlighting = warning +resharper_class_can_be_sealed_global_highlighting = none +resharper_class_can_be_sealed_local_highlighting = none +resharper_class_never_instantiated_global_highlighting = suggestion +resharper_class_never_instantiated_local_highlighting = suggestion +resharper_class_with_virtual_members_never_inherited_global_highlighting = suggestion +resharper_class_with_virtual_members_never_inherited_local_highlighting = suggestion +resharper_clear_attribute_is_obsolete_all_highlighting = warning +resharper_clear_attribute_is_obsolete_highlighting = warning +resharper_collection_never_queried_global_highlighting = warning +resharper_collection_never_queried_local_highlighting = warning +resharper_collection_never_updated_global_highlighting = warning +resharper_collection_never_updated_local_highlighting = warning +resharper_compare_non_constrained_generic_with_null_highlighting = none +resharper_compare_of_floats_by_equality_operator_highlighting = warning +resharper_complex_object_destructuring_problem_highlighting = warning +resharper_complex_object_in_context_destructuring_problem_highlighting = warning +resharper_conditional_access_qualifier_is_non_nullable_according_to_api_contract_highlighting = warning +resharper_conditional_ternary_equal_branch_highlighting = warning +resharper_condition_is_always_true_or_false_according_to_nullable_api_contract_highlighting = warning +resharper_condition_is_always_true_or_false_highlighting = warning +resharper_confusing_char_as_integer_in_constructor_highlighting = warning +resharper_constant_conditional_access_qualifier_highlighting = warning +resharper_constant_null_coalescing_condition_highlighting = warning +resharper_consteval_if_is_always_constant_highlighting = warning +resharper_constructor_initializer_loop_highlighting = warning +resharper_constructor_with_must_dispose_resource_attribute_base_is_not_annotated_highlighting = warning +resharper_container_annotation_redundancy_highlighting = warning +resharper_contextual_logger_problem_highlighting = warning +resharper_context_value_is_provided_highlighting = none +resharper_contract_annotation_not_parsed_highlighting = warning +resharper_convert_closure_to_method_group_highlighting = suggestion +resharper_convert_conditional_ternary_expression_to_switch_expression_highlighting = hint +resharper_convert_constructor_to_member_initializers_highlighting = suggestion +resharper_convert_if_do_to_while_highlighting = suggestion +resharper_convert_if_statement_to_conditional_ternary_expression_highlighting = suggestion +resharper_convert_if_statement_to_null_coalescing_assignment_highlighting = suggestion +resharper_convert_if_statement_to_null_coalescing_expression_highlighting = suggestion +resharper_convert_if_statement_to_return_statement_highlighting = hint +resharper_convert_if_statement_to_switch_statement_highlighting = hint +resharper_convert_if_to_or_expression_highlighting = suggestion +resharper_convert_nullable_to_short_form_highlighting = suggestion +resharper_convert_switch_statement_to_switch_expression_highlighting = hint +resharper_convert_to_auto_property_highlighting = suggestion +resharper_convert_to_auto_property_when_possible_highlighting = hint +resharper_convert_to_auto_property_with_private_setter_highlighting = hint +resharper_convert_to_compound_assignment_highlighting = hint +resharper_convert_to_constant_global_highlighting = hint +resharper_convert_to_constant_local_highlighting = hint +resharper_convert_to_lambda_expression_highlighting = suggestion +resharper_convert_to_local_function_highlighting = suggestion +resharper_convert_to_null_coalescing_compound_assignment_highlighting = suggestion +resharper_convert_to_primary_constructor_highlighting = none +resharper_convert_to_static_class_highlighting = suggestion +resharper_convert_to_using_declaration_highlighting = suggestion +resharper_convert_to_vb_auto_property_highlighting = suggestion +resharper_convert_to_vb_auto_property_when_possible_highlighting = hint +resharper_convert_to_vb_auto_property_with_private_setter_highlighting = hint +resharper_convert_type_check_pattern_to_null_check_highlighting = warning +resharper_convert_type_check_to_null_check_highlighting = warning +resharper_co_variant_array_conversion_highlighting = warning +resharper_cqrs_debug_highlighting = warning +resharper_c_declaration_with_implicit_int_type_highlighting = warning +resharper_c_sharp_build_cs_invalid_module_name_highlighting = warning +resharper_c_sharp_missing_plugin_dependency_highlighting = warning +resharper_default_struct_equality_is_used_global_highlighting = warning +resharper_default_struct_equality_is_used_local_highlighting = warning +resharper_default_value_attribute_for_optional_parameter_highlighting = warning +resharper_dispose_on_using_variable_highlighting = warning +resharper_double_negation_in_pattern_highlighting = suggestion +resharper_double_negation_operator_highlighting = suggestion +resharper_duplicated_switch_section_bodies_highlighting = hint +resharper_duplicate_key_collection_initialization_highlighting = warning +resharper_duplicate_resource_highlighting = warning +resharper_empty_constructor_highlighting = warning +resharper_empty_destructor_highlighting = warning +resharper_empty_for_statement_highlighting = warning +resharper_empty_general_catch_clause_highlighting = warning +resharper_empty_namespace_highlighting = warning +resharper_empty_region_highlighting = suggestion +resharper_empty_statement_highlighting = warning +resharper_empty_title_tag_highlighting = hint +resharper_entity_framework_client_side_db_function_call_highlighting = warning +resharper_entity_framework_model_validation_circular_dependency_highlighting = hint +resharper_entity_framework_model_validation_unlimited_string_length_highlighting = warning +resharper_entity_framework_n_plus_one_incomplete_data_query_highlighting = suggestion +resharper_entity_framework_n_plus_one_incomplete_data_usage_highlighting = warning +resharper_entity_framework_n_plus_one_query_highlighting = suggestion +resharper_entity_framework_n_plus_one_usage_highlighting = warning +resharper_entity_framework_unsupported_server_side_function_call_highlighting = warning +resharper_entity_name_captured_only_global_highlighting = warning +resharper_entity_name_captured_only_local_highlighting = warning +resharper_enumerable_sum_in_explicit_unchecked_context_highlighting = warning +resharper_enum_underlying_type_is_int_highlighting = warning +resharper_equal_expression_comparison_highlighting = warning +resharper_escaped_keyword_highlighting = warning +resharper_event_never_invoked_global_highlighting = suggestion +resharper_event_never_subscribed_to_global_highlighting = suggestion +resharper_event_never_subscribed_to_local_highlighting = suggestion +resharper_event_unsubscription_via_anonymous_delegate_highlighting = warning +resharper_exception_passed_as_template_argument_problem_highlighting = warning +resharper_explicit_caller_info_argument_highlighting = warning +resharper_expression_is_always_null_highlighting = warning +resharper_extract_common_branching_code_highlighting = hint +resharper_extract_common_property_pattern_highlighting = hint +resharper_field_can_be_made_read_only_global_highlighting = suggestion +resharper_field_can_be_made_read_only_local_highlighting = suggestion +resharper_field_hides_interface_property_with_default_implementation_highlighting = warning +resharper_foreach_can_be_converted_to_query_using_another_get_enumerator_highlighting = hint +resharper_foreach_can_be_partly_converted_to_query_using_another_get_enumerator_highlighting = hint +resharper_format_string_placeholders_mismatch_highlighting = warning +resharper_format_string_problem_highlighting = warning +resharper_for_can_be_converted_to_foreach_highlighting = none +resharper_for_statement_condition_is_true_highlighting = warning +resharper_function_complexity_overflow_highlighting = none +resharper_function_never_returns_highlighting = warning +resharper_function_recursive_on_all_paths_highlighting = warning +resharper_f_sharp_builtin_function_reimplementation_highlighting = hint +resharper_f_sharp_cons_with_empty_list_pat_highlighting = suggestion +resharper_f_sharp_dot_lambda_can_be_used_highlighting = hint +resharper_f_sharp_expression_can_be_replaced_with_condition_highlighting = hint +resharper_f_sharp_interpolated_string_highlighting = suggestion +resharper_f_sharp_lambda_can_be_replaced_with_inner_expression_highlighting = hint +resharper_f_sharp_lambda_can_be_simplified_highlighting = hint +resharper_f_sharp_redundant_application_highlighting = warning +resharper_f_sharp_redundant_as_pattern_highlighting = warning +resharper_f_sharp_redundant_attribute_parens_highlighting = warning +resharper_f_sharp_redundant_attribute_suffix_highlighting = warning +resharper_f_sharp_redundant_backticks_highlighting = warning +resharper_f_sharp_redundant_dot_in_indexer_highlighting = warning +resharper_f_sharp_redundant_name_qualifier_highlighting = warning +resharper_f_sharp_redundant_new_highlighting = warning +resharper_f_sharp_redundant_open_highlighting = warning +resharper_f_sharp_redundant_parens_highlighting = warning +resharper_f_sharp_redundant_require_qualified_access_attribute_highlighting = warning +resharper_f_sharp_redundant_string_interpolation_highlighting = suggestion +resharper_f_sharp_redundant_union_case_field_patterns_highlighting = warning +resharper_f_sharp_use_wild_self_id_highlighting = suggestion +resharper_gc_suppress_finalize_for_type_without_destructor_highlighting = warning +resharper_generic_enumerator_not_disposed_highlighting = warning +resharper_godot_missing_parameterless_constructor_highlighting = warning +resharper_heap_view_boxing_allocation_highlighting = hint +resharper_heap_view_can_avoid_closure_highlighting = suggestion +resharper_heap_view_closure_allocation_highlighting = hint +resharper_heap_view_delegate_allocation_highlighting = hint +resharper_heap_view_implicit_capture_highlighting = none +resharper_heap_view_object_allocation_evident_highlighting = hint +resharper_heap_view_object_allocation_highlighting = hint +resharper_heap_view_object_allocation_possible_highlighting = hint +resharper_heap_view_possible_boxing_allocation_highlighting = hint +resharper_heuristic_unreachable_code_highlighting = warning +resharper_html_attributes_quotes_highlighting = hint +resharper_html_attribute_not_resolved_highlighting = warning +resharper_html_attribute_value_not_resolved_highlighting = warning +resharper_html_dead_code_highlighting = warning +resharper_html_event_not_resolved_highlighting = warning +resharper_html_id_duplication_highlighting = warning +resharper_html_id_not_resolved_highlighting = warning +resharper_html_obsolete_highlighting = warning +resharper_html_path_error_highlighting = warning +resharper_html_tag_not_closed_highlighting = error +resharper_html_tag_not_resolved_highlighting = warning +resharper_html_tag_should_be_self_closed_highlighting = warning +resharper_html_tag_should_not_be_self_closed_highlighting = warning +resharper_html_warning_highlighting = warning +resharper_if_std_is_constant_evaluated_can_be_replaced_highlighting = suggestion +resharper_ignored_directive_highlighting = warning +resharper_inactive_preprocessor_branch_highlighting = warning +resharper_inconsistently_synchronized_field_highlighting = warning +resharper_inconsistent_context_log_property_naming_highlighting = warning +resharper_inconsistent_log_property_naming_highlighting = warning +resharper_inconsistent_naming_highlighting = warning +resharper_inconsistent_order_of_locks_highlighting = warning +resharper_incorrect_blank_lines_near_braces_highlighting = none +resharper_indexing_by_invalid_range_highlighting = warning +resharper_inheritdoc_consider_usage_highlighting = none +resharper_inheritdoc_invalid_usage_highlighting = warning +resharper_inline_out_variable_declaration_highlighting = suggestion +resharper_inline_temporary_variable_highlighting = hint +resharper_internal_or_private_member_not_documented_highlighting = none +resharper_interpolated_string_expression_is_not_i_formattable_highlighting = warning +resharper_introduce_optional_parameters_global_highlighting = suggestion +resharper_introduce_optional_parameters_local_highlighting = suggestion +resharper_int_division_by_zero_highlighting = warning +resharper_int_variable_overflow_highlighting = warning +resharper_int_variable_overflow_in_checked_context_highlighting = warning +resharper_int_variable_overflow_in_unchecked_context_highlighting = warning +resharper_invalid_value_type_highlighting = warning +resharper_invalid_xml_doc_comment_highlighting = warning +resharper_invert_condition_1_highlighting = hint +resharper_invert_if_highlighting = hint +resharper_invocation_is_skipped_highlighting = hint +resharper_invoke_as_extension_method_highlighting = suggestion +resharper_in_parameter_with_must_dispose_resource_attribute_highlighting = warning +resharper_is_expression_always_false_highlighting = warning +resharper_is_expression_always_true_highlighting = warning +resharper_iterator_method_result_is_ignored_highlighting = warning +resharper_iterator_never_returns_highlighting = warning +resharper_join_declaration_and_initializer_highlighting = suggestion +resharper_join_null_check_with_usage_highlighting = suggestion +resharper_lambda_expression_can_be_made_static_highlighting = none +resharper_lambda_expression_must_be_static_highlighting = suggestion +resharper_lambda_should_not_capture_context_highlighting = warning +resharper_localizable_element_highlighting = warning +resharper_local_function_can_be_made_static_highlighting = none +resharper_local_function_hides_method_highlighting = warning +resharper_local_variable_hides_member_highlighting = warning +resharper_local_variable_hides_primary_constructor_parameter_highlighting = warning +resharper_log_message_is_sentence_problem_highlighting = warning +resharper_long_literal_ending_lower_l_highlighting = warning +resharper_loop_can_be_converted_to_query_highlighting = none +resharper_loop_can_be_partly_converted_to_query_highlighting = none +resharper_loop_variable_is_never_changed_inside_loop_highlighting = warning +resharper_math_abs_method_is_redundant_highlighting = warning +resharper_math_clamp_min_greater_than_max_highlighting = warning +resharper_meaningless_default_parameter_value_highlighting = warning +resharper_member_can_be_file_local_highlighting = none +resharper_member_can_be_internal_highlighting = none +resharper_member_can_be_made_static_global_highlighting = hint +resharper_member_can_be_made_static_local_highlighting = hint +resharper_member_can_be_private_global_highlighting = suggestion +resharper_member_can_be_private_local_highlighting = suggestion +resharper_member_can_be_protected_global_highlighting = suggestion +resharper_member_can_be_protected_local_highlighting = suggestion +resharper_member_hides_interface_member_with_default_implementation_highlighting = warning +resharper_member_hides_static_from_outer_class_highlighting = warning +resharper_member_initializer_value_ignored_highlighting = warning +resharper_merge_and_pattern_highlighting = suggestion +resharper_merge_cast_with_type_check_highlighting = suggestion +resharper_merge_conditional_expression_highlighting = suggestion +resharper_merge_into_logical_pattern_highlighting = hint +resharper_merge_into_negated_pattern_highlighting = hint +resharper_merge_into_pattern_highlighting = suggestion +resharper_merge_nested_property_patterns_highlighting = suggestion +resharper_merge_sequential_checks_highlighting = hint +resharper_method_has_async_overload_highlighting = suggestion +resharper_method_has_async_overload_with_cancellation_highlighting = suggestion +resharper_method_overload_with_optional_parameter_highlighting = warning +resharper_method_supports_cancellation_highlighting = suggestion +resharper_misleading_body_like_statement_highlighting = warning +resharper_mismatched_asmdef_filename_highlighting = suggestion +resharper_missing_alt_attribute_in_img_tag_highlighting = hint +resharper_missing_blank_lines_highlighting = none +resharper_missing_body_tag_highlighting = warning +resharper_missing_head_and_body_tags_highlighting = warning +resharper_missing_head_tag_highlighting = warning +resharper_missing_indent_highlighting = none +resharper_missing_linebreak_highlighting = none +resharper_missing_space_highlighting = none +resharper_more_specific_foreach_variable_type_available_highlighting = suggestion +resharper_move_local_function_after_jump_statement_highlighting = hint +resharper_move_to_existing_positional_deconstruction_pattern_highlighting = hint +resharper_move_variable_declaration_inside_loop_condition_highlighting = suggestion +resharper_multiple_nullable_attributes_usage_highlighting = warning +resharper_multiple_order_by_highlighting = warning +resharper_multiple_resolve_candidates_in_text_highlighting = warning +resharper_multiple_spaces_highlighting = none +resharper_multiple_statements_on_one_line_highlighting = none +resharper_multiple_type_members_on_one_line_highlighting = none +resharper_must_use_return_value_highlighting = warning +resharper_mvc_action_not_resolved_highlighting = warning +resharper_mvc_area_not_resolved_highlighting = warning +resharper_mvc_controller_not_resolved_highlighting = warning +resharper_mvc_invalid_model_type_highlighting = error +resharper_mvc_masterpage_not_resolved_highlighting = warning +resharper_mvc_partial_view_not_resolved_highlighting = warning +resharper_mvc_template_not_resolved_highlighting = warning +resharper_mvc_view_component_not_resolved_highlighting = warning +resharper_mvc_view_component_view_not_resolved_highlighting = warning +resharper_mvc_view_not_resolved_highlighting = warning +resharper_negation_of_relational_pattern_highlighting = suggestion +resharper_negative_equality_expression_highlighting = suggestion +resharper_negative_index_highlighting = warning +resharper_nested_record_update_can_be_simplified_highlighting = suggestion +resharper_nested_string_interpolation_highlighting = suggestion +resharper_non_atomic_compound_operator_highlighting = warning +resharper_non_constant_equality_expression_has_constant_result_highlighting = warning +resharper_non_parsable_element_highlighting = warning +resharper_non_readonly_member_in_get_hash_code_highlighting = warning +resharper_non_volatile_field_in_double_check_locking_highlighting = warning +resharper_not_accessed_field_global_highlighting = suggestion +resharper_not_accessed_field_local_highlighting = warning +resharper_not_accessed_out_parameter_variable_highlighting = warning +resharper_not_accessed_positional_property_global_highlighting = warning +resharper_not_accessed_positional_property_local_highlighting = warning +resharper_not_accessed_variable_highlighting = warning +resharper_not_assigned_out_parameter_highlighting = warning +resharper_not_declared_in_parent_culture_highlighting = warning +resharper_not_disposed_resource_highlighting = warning +resharper_not_disposed_resource_is_returned_by_property_highlighting = warning +resharper_not_disposed_resource_is_returned_highlighting = suggestion +resharper_not_null_or_required_member_is_not_initialized_highlighting = warning +resharper_not_observable_annotation_redundancy_highlighting = warning +resharper_not_overridden_in_specific_culture_highlighting = warning +resharper_not_resolved_in_text_highlighting = warning +resharper_no_support_for_vb_highlighting = warning +resharper_nullable_warning_suppression_is_used_highlighting = none +resharper_nullness_annotation_conflict_with_jet_brains_annotations_highlighting = warning +resharper_null_coalescing_condition_is_always_not_null_according_to_api_contract_highlighting = warning +resharper_n_unit_async_method_must_be_task_highlighting = warning +resharper_n_unit_attribute_produces_too_many_tests_highlighting = none +resharper_n_unit_auto_fixture_incorrect_argument_type_highlighting = warning +resharper_n_unit_auto_fixture_missed_test_attribute_highlighting = warning +resharper_n_unit_auto_fixture_missed_test_or_test_fixture_attribute_highlighting = warning +resharper_n_unit_auto_fixture_redundant_argument_in_inline_auto_data_attribute_highlighting = warning +resharper_n_unit_duplicate_values_highlighting = warning +resharper_n_unit_ignored_parameter_attribute_highlighting = warning +resharper_n_unit_implicit_unspecified_null_values_highlighting = warning +resharper_n_unit_incorrect_argument_type_highlighting = warning +resharper_n_unit_incorrect_expected_result_type_highlighting = warning +resharper_n_unit_incorrect_range_bounds_highlighting = warning +resharper_n_unit_method_with_parameters_and_test_attribute_highlighting = warning +resharper_n_unit_missing_arguments_in_test_case_attribute_highlighting = warning +resharper_n_unit_missing_cancel_after_attribute_highlighting = warning +resharper_n_unit_non_public_method_with_test_attribute_highlighting = warning +resharper_n_unit_no_values_provided_highlighting = warning +resharper_n_unit_parameter_type_is_not_compatible_with_attribute_highlighting = warning +resharper_n_unit_range_attribute_bounds_are_out_of_range_highlighting = warning +resharper_n_unit_range_step_sign_mismatch_highlighting = warning +resharper_n_unit_range_step_value_must_not_be_zero_highlighting = warning +resharper_n_unit_range_to_value_is_not_reachable_highlighting = warning +resharper_n_unit_redundant_argument_instead_of_expected_result_highlighting = warning +resharper_n_unit_redundant_argument_in_test_case_attribute_highlighting = warning +resharper_n_unit_redundant_expected_result_in_test_case_attribute_highlighting = warning +resharper_n_unit_test_case_attribute_requires_expected_result_highlighting = warning +resharper_n_unit_test_case_result_property_duplicates_expected_result_highlighting = warning +resharper_n_unit_test_case_result_property_is_obsolete_highlighting = warning +resharper_n_unit_test_case_source_must_be_field_property_method_highlighting = warning +resharper_n_unit_test_case_source_must_be_static_highlighting = warning +resharper_n_unit_test_case_source_should_implement_i_enumerable_highlighting = warning +resharper_object_creation_as_statement_highlighting = warning +resharper_obsolete_element_error_highlighting = error +resharper_obsolete_element_highlighting = warning +resharper_odin_odin_member_present_in_multiple_groups_highlighting = warning +resharper_odin_odin_member_wrong_grouping_attribute_highlighting = warning +resharper_odin_odin_unknown_grouping_path_highlighting = warning +resharper_one_way_operation_contract_with_return_type_highlighting = warning +resharper_operation_contract_without_service_contract_highlighting = warning +resharper_operator_is_can_be_used_highlighting = warning +resharper_operator_without_matched_checked_operator_highlighting = warning +resharper_optional_parameter_hierarchy_mismatch_highlighting = warning +resharper_optional_parameter_ref_out_highlighting = warning +resharper_other_tags_inside_script1_highlighting = error +resharper_other_tags_inside_script2_highlighting = error +resharper_other_tags_inside_unclosed_script_highlighting = error +resharper_outdent_is_off_prev_level_highlighting = none +resharper_out_parameter_value_is_always_discarded_global_highlighting = suggestion +resharper_out_parameter_value_is_always_discarded_local_highlighting = warning +resharper_out_parameter_with_handles_resource_disposal_attribute_highlighting = warning +resharper_overridden_with_empty_value_highlighting = warning +resharper_overridden_with_same_value_highlighting = suggestion +resharper_parameter_hides_member_highlighting = warning +resharper_parameter_hides_primary_constructor_parameter_highlighting = warning +resharper_parameter_only_used_for_precondition_check_global_highlighting = suggestion +resharper_parameter_only_used_for_precondition_check_local_highlighting = warning +resharper_parameter_type_can_be_enumerable_global_highlighting = none +resharper_parameter_type_can_be_enumerable_local_highlighting = none +resharper_partial_method_parameter_name_mismatch_highlighting = warning +resharper_partial_method_with_single_part_highlighting = warning +resharper_partial_type_with_single_part_highlighting = warning +resharper_pass_string_interpolation_highlighting = hint +resharper_pattern_always_matches_highlighting = warning +resharper_pattern_is_always_true_or_false_highlighting = warning +resharper_pattern_is_redundant_highlighting = warning +resharper_pattern_never_matches_highlighting = warning +resharper_place_assignment_expression_into_block_highlighting = none +resharper_polymorphic_field_like_event_invocation_highlighting = warning +resharper_positional_property_used_problem_highlighting = warning +resharper_possible_infinite_inheritance_highlighting = warning +resharper_possible_intended_rethrow_highlighting = warning +resharper_possible_interface_member_ambiguity_highlighting = warning +resharper_possible_invalid_cast_exception_highlighting = warning +resharper_possible_invalid_cast_exception_in_foreach_loop_highlighting = warning +resharper_possible_invalid_operation_exception_collection_was_modified_highlighting = warning +resharper_possible_invalid_operation_exception_highlighting = warning +resharper_possible_loss_of_fraction_highlighting = warning +resharper_possible_mistaken_call_to_get_type_highlighting = warning +resharper_possible_mistaken_system_type_argument_highlighting = warning +resharper_possible_multiple_enumeration_highlighting = warning +resharper_possible_multiple_write_access_in_double_check_locking_highlighting = warning +resharper_possible_null_reference_exception_highlighting = warning +resharper_possible_struct_member_modification_of_non_variable_struct_highlighting = warning +resharper_possible_unintended_linear_search_in_set_highlighting = warning +resharper_possible_unintended_queryable_as_enumerable_highlighting = suggestion +resharper_possible_unintended_reference_comparison_highlighting = warning +resharper_possible_write_to_me_highlighting = warning +resharper_possibly_impure_method_call_on_readonly_variable_highlighting = warning +resharper_possibly_missing_indexer_initializer_comma_highlighting = warning +resharper_possibly_mistaken_use_of_interpolated_string_insert_highlighting = warning +resharper_possibly_unintended_usage_parameterless_get_expression_type_highlighting = error +resharper_prefer_concrete_value_over_default_highlighting = suggestion +resharper_primary_constructor_parameter_capture_disallowed_highlighting = none +resharper_private_field_can_be_converted_to_local_variable_highlighting = warning +resharper_property_can_be_made_init_only_global_highlighting = suggestion +resharper_property_can_be_made_init_only_local_highlighting = suggestion +resharper_property_field_keyword_is_never_assigned_highlighting = warning +resharper_property_field_keyword_is_never_used_highlighting = warning +resharper_property_not_resolved_highlighting = error +resharper_public_constructor_in_abstract_class_highlighting = suggestion +resharper_pure_attribute_on_void_method_highlighting = warning +resharper_raw_string_can_be_simplified_highlighting = hint +resharper_razor_assembly_not_resolved_highlighting = warning +resharper_razor_layout_not_resolved_highlighting = error +resharper_razor_null_conditional_operator_highlighting_highlighting = warning +resharper_razor_section_not_resolved_highlighting = error +resharper_razor_unresolved_component_highlighting = warning +resharper_read_access_in_double_check_locking_highlighting = warning +resharper_redundant_abstract_modifier_highlighting = warning +resharper_redundant_accessor_body_highlighting = suggestion +resharper_redundant_always_match_subpattern_highlighting = suggestion +resharper_redundant_anonymous_type_property_name_highlighting = warning +resharper_redundant_argument_default_value_highlighting = warning +resharper_redundant_array_creation_expression_highlighting = hint +resharper_redundant_array_lower_bound_specification_highlighting = warning +resharper_redundant_assignment_highlighting = warning +resharper_redundant_attribute_parentheses_highlighting = hint +resharper_redundant_attribute_suffix_highlighting = warning +resharper_redundant_attribute_usage_property_highlighting = suggestion +resharper_redundant_base_constructor_call_highlighting = warning +resharper_redundant_base_qualifier_highlighting = warning +resharper_redundant_blank_lines_highlighting = none +resharper_redundant_bool_compare_highlighting = warning +resharper_redundant_caller_argument_expression_default_value_highlighting = warning +resharper_redundant_case_label_highlighting = warning +resharper_redundant_cast_highlighting = warning +resharper_redundant_catch_clause_highlighting = warning +resharper_redundant_check_before_assignment_highlighting = warning +resharper_redundant_collection_initializer_element_braces_highlighting = hint +resharper_redundant_configure_await_highlighting = suggestion +resharper_redundant_declaration_semicolon_highlighting = hint +resharper_redundant_default_member_initializer_highlighting = warning +resharper_redundant_delegate_creation_highlighting = warning +resharper_redundant_dictionary_contains_key_before_adding_highlighting = warning +resharper_redundant_disable_warning_comment_highlighting = warning +resharper_redundant_discard_designation_highlighting = suggestion +resharper_redundant_empty_case_else_highlighting = warning +resharper_redundant_empty_finally_block_highlighting = warning +resharper_redundant_empty_object_creation_argument_list_highlighting = hint +resharper_redundant_empty_object_or_collection_initializer_highlighting = warning +resharper_redundant_empty_switch_section_highlighting = warning +resharper_redundant_enumerable_cast_call_highlighting = warning +resharper_redundant_enum_case_label_for_default_section_highlighting = none +resharper_redundant_explicit_array_creation_highlighting = warning +resharper_redundant_explicit_array_size_highlighting = warning +resharper_redundant_explicit_nullable_creation_highlighting = warning +resharper_redundant_explicit_params_array_creation_highlighting = suggestion +resharper_redundant_explicit_positional_property_declaration_highlighting = warning +resharper_redundant_explicit_tuple_component_name_highlighting = warning +resharper_redundant_extends_list_entry_highlighting = warning +resharper_redundant_fixed_pointer_declaration_highlighting = suggestion +resharper_redundant_if_else_block_highlighting = hint +resharper_redundant_if_statement_then_keyword_highlighting = none +resharper_redundant_immediate_delegate_invocation_highlighting = suggestion +resharper_redundant_include_highlighting = warning +resharper_redundant_is_before_relational_pattern_highlighting = suggestion +resharper_redundant_iterator_keyword_highlighting = warning +resharper_redundant_jump_statement_highlighting = warning +resharper_redundant_lambda_parameter_type_highlighting = warning +resharper_redundant_lambda_signature_parentheses_highlighting = hint +resharper_redundant_linebreak_highlighting = none +resharper_redundant_logical_conditional_expression_operand_highlighting = warning +resharper_redundant_me_qualifier_highlighting = warning +resharper_redundant_my_base_qualifier_highlighting = warning +resharper_redundant_my_class_qualifier_highlighting = warning +resharper_redundant_name_qualifier_highlighting = warning +resharper_redundant_not_null_constraint_highlighting = warning +resharper_redundant_nullable_annotation_on_reference_type_constraint_highlighting = warning +resharper_redundant_nullable_annotation_on_type_constraint_has_non_nullable_base_type_highlighting = warning +resharper_redundant_nullable_annotation_on_type_constraint_has_non_nullable_type_kind_highlighting = warning +resharper_redundant_nullable_directive_highlighting = warning +resharper_redundant_nullable_flow_attribute_highlighting = warning +resharper_redundant_nullable_type_mark_highlighting = warning +resharper_redundant_nullness_attribute_with_nullable_reference_types_highlighting = warning +resharper_redundant_overflow_checking_context_highlighting = warning +resharper_redundant_overload_global_highlighting = suggestion +resharper_redundant_overload_local_highlighting = suggestion +resharper_redundant_overridden_member_highlighting = warning +resharper_redundant_params_highlighting = warning +resharper_redundant_parentheses_highlighting = none +resharper_redundant_partial_method_empty_implementation_highlighting = warning +resharper_redundant_pattern_parentheses_highlighting = hint +resharper_redundant_property_parentheses_highlighting = hint +resharper_redundant_property_pattern_clause_highlighting = suggestion +resharper_redundant_qualifier_highlighting = warning +resharper_redundant_query_order_by_ascending_keyword_highlighting = hint +resharper_redundant_range_bound_highlighting = suggestion +resharper_redundant_readonly_modifier_highlighting = suggestion +resharper_redundant_record_class_keyword_highlighting = warning +resharper_redundant_scoped_parameter_modifier_highlighting = warning +resharper_redundant_setter_value_parameter_declaration_highlighting = hint +resharper_redundant_space_highlighting = none +resharper_redundant_string_format_call_highlighting = warning +resharper_redundant_string_interpolation_highlighting = suggestion +resharper_redundant_string_to_char_array_call_highlighting = warning +resharper_redundant_string_type_highlighting = suggestion +resharper_redundant_suppress_nullable_warning_expression_highlighting = warning +resharper_redundant_ternary_expression_highlighting = warning +resharper_redundant_to_string_call_for_value_type_highlighting = hint +resharper_redundant_to_string_call_highlighting = warning +resharper_redundant_type_arguments_of_method_highlighting = warning +resharper_redundant_type_check_in_pattern_highlighting = warning +resharper_redundant_type_declaration_body_highlighting = suggestion +resharper_redundant_unsafe_context_highlighting = warning +resharper_redundant_using_directive_global_highlighting = warning +resharper_redundant_using_directive_highlighting = warning +resharper_redundant_verbatim_prefix_highlighting = suggestion +resharper_redundant_verbatim_string_prefix_highlighting = suggestion +resharper_redundant_virtual_modifier_highlighting = warning +resharper_redundant_with_cancellation_highlighting = warning +resharper_redundant_with_expression_highlighting = suggestion +resharper_reference_equals_with_value_type_highlighting = warning +resharper_reg_exp_inspections_highlighting = warning +resharper_remove_constructor_invocation_highlighting = none +resharper_remove_redundant_or_statement_false_highlighting = suggestion +resharper_remove_redundant_or_statement_true_highlighting = suggestion +resharper_remove_to_list_1_highlighting = suggestion +resharper_remove_to_list_2_highlighting = suggestion +resharper_replace_async_with_task_return_highlighting = none +resharper_replace_auto_property_with_computed_property_highlighting = hint +resharper_replace_conditional_expression_with_null_coalescing_highlighting = suggestion +resharper_replace_object_pattern_with_var_pattern_highlighting = suggestion +resharper_replace_sequence_equal_with_constant_pattern_highlighting = suggestion +resharper_replace_slice_with_range_indexer_highlighting = hint +resharper_replace_substring_with_range_indexer_highlighting = hint +resharper_replace_with_field_keyword_highlighting = suggestion +resharper_replace_with_first_or_default_1_highlighting = suggestion +resharper_replace_with_first_or_default_2_highlighting = suggestion +resharper_replace_with_first_or_default_3_highlighting = suggestion +resharper_replace_with_first_or_default_4_highlighting = suggestion +resharper_replace_with_last_or_default_1_highlighting = suggestion +resharper_replace_with_last_or_default_2_highlighting = suggestion +resharper_replace_with_last_or_default_3_highlighting = suggestion +resharper_replace_with_last_or_default_4_highlighting = suggestion +resharper_replace_with_of_type_1_highlighting = suggestion +resharper_replace_with_of_type_2_highlighting = suggestion +resharper_replace_with_of_type_3_highlighting = suggestion +resharper_replace_with_of_type_any_1_highlighting = suggestion +resharper_replace_with_of_type_any_2_highlighting = suggestion +resharper_replace_with_of_type_count_1_highlighting = suggestion +resharper_replace_with_of_type_count_2_highlighting = suggestion +resharper_replace_with_of_type_first_1_highlighting = suggestion +resharper_replace_with_of_type_first_2_highlighting = suggestion +resharper_replace_with_of_type_first_or_default_1_highlighting = suggestion +resharper_replace_with_of_type_first_or_default_2_highlighting = suggestion +resharper_replace_with_of_type_last_1_highlighting = suggestion +resharper_replace_with_of_type_last_2_highlighting = suggestion +resharper_replace_with_of_type_last_or_default_1_highlighting = suggestion +resharper_replace_with_of_type_last_or_default_2_highlighting = suggestion +resharper_replace_with_of_type_long_count_highlighting = suggestion +resharper_replace_with_of_type_single_1_highlighting = suggestion +resharper_replace_with_of_type_single_2_highlighting = suggestion +resharper_replace_with_of_type_single_or_default_1_highlighting = suggestion +resharper_replace_with_of_type_single_or_default_2_highlighting = suggestion +resharper_replace_with_of_type_where_highlighting = suggestion +resharper_replace_with_primary_constructor_parameter_highlighting = suggestion +resharper_replace_with_simple_assignment_false_highlighting = suggestion +resharper_replace_with_simple_assignment_true_highlighting = suggestion +resharper_replace_with_single_assignment_false_highlighting = suggestion +resharper_replace_with_single_assignment_true_highlighting = suggestion +resharper_replace_with_single_call_to_any_highlighting = suggestion +resharper_replace_with_single_call_to_count_highlighting = suggestion +resharper_replace_with_single_call_to_first_highlighting = suggestion +resharper_replace_with_single_call_to_first_or_default_highlighting = suggestion +resharper_replace_with_single_call_to_last_highlighting = suggestion +resharper_replace_with_single_call_to_last_or_default_highlighting = suggestion +resharper_replace_with_single_call_to_single_highlighting = suggestion +resharper_replace_with_single_call_to_single_or_default_highlighting = suggestion +resharper_replace_with_single_or_default_1_highlighting = suggestion +resharper_replace_with_single_or_default_2_highlighting = suggestion +resharper_replace_with_single_or_default_3_highlighting = suggestion +resharper_replace_with_single_or_default_4_highlighting = suggestion +resharper_replace_with_string_is_null_or_empty_highlighting = suggestion +resharper_required_base_types_conflict_highlighting = warning +resharper_required_base_types_direct_conflict_highlighting = warning +resharper_required_base_types_is_not_inherited_highlighting = warning +resharper_resource_item_not_resolved_highlighting = error +resharper_resource_not_resolved_highlighting = error +resharper_resx_not_resolved_highlighting = warning +resharper_return_of_task_produced_by_using_variable_highlighting = warning +resharper_return_of_using_variable_highlighting = warning +resharper_return_type_can_be_enumerable_global_highlighting = none +resharper_return_type_can_be_enumerable_local_highlighting = none +resharper_return_type_can_be_not_nullable_highlighting = warning +resharper_return_value_of_pure_method_is_not_used_highlighting = warning +resharper_route_templates_action_route_prefix_can_be_extracted_to_controller_route_highlighting = hint +resharper_route_templates_ambiguous_matching_constraint_constructor_highlighting = warning +resharper_route_templates_constraint_argument_cannot_be_converted_highlighting = warning +resharper_route_templates_controller_route_parameter_is_not_passed_to_methods_highlighting = hint +resharper_route_templates_duplicated_parameter_highlighting = warning +resharper_route_templates_matching_constraint_constructor_not_resolved_highlighting = warning +resharper_route_templates_method_missing_route_parameters_highlighting = hint +resharper_route_templates_optional_parameter_can_be_preceded_only_by_single_period_highlighting = warning +resharper_route_templates_optional_parameter_must_be_at_the_end_of_segment_highlighting = warning +resharper_route_templates_parameter_constraint_can_be_specified_highlighting = hint +resharper_route_templates_parameter_type_and_constraints_mismatch_highlighting = warning +resharper_route_templates_parameter_type_can_be_made_stricter_highlighting = suggestion +resharper_route_templates_route_parameter_constraint_not_resolved_highlighting = warning +resharper_route_templates_route_parameter_is_not_passed_to_method_highlighting = hint +resharper_route_templates_route_token_not_resolved_highlighting = warning +resharper_route_templates_symbol_not_resolved_highlighting = warning +resharper_route_templates_syntax_error_highlighting = warning +resharper_safe_cast_is_used_as_type_check_highlighting = suggestion +resharper_script_tag_has_both_src_and_content_attributes_highlighting = error +resharper_sealed_member_in_sealed_class_highlighting = warning +resharper_separate_control_transfer_statement_highlighting = none +resharper_separate_local_functions_with_jump_statement_highlighting = hint +resharper_service_contract_without_operations_highlighting = warning +resharper_shader_lab_shader_reference_multiple_candidates_highlighting = warning +resharper_shader_lab_shader_reference_not_resolved_highlighting = warning +resharper_shift_expression_real_shift_count_is_zero_highlighting = warning +resharper_shift_expression_result_equals_zero_highlighting = warning +resharper_shift_expression_right_operand_not_equal_real_count_highlighting = warning +resharper_shift_expression_zero_left_operand_highlighting = warning +resharper_similar_anonymous_type_nearby_highlighting = hint +resharper_simplify_conditional_operator_highlighting = suggestion +resharper_simplify_conditional_ternary_expression_highlighting = suggestion +resharper_simplify_i_if_highlighting = suggestion +resharper_simplify_linq_expression_use_all_highlighting = suggestion +resharper_simplify_linq_expression_use_any_highlighting = suggestion +resharper_simplify_string_interpolation_highlighting = suggestion +resharper_specify_a_culture_in_string_conversion_explicitly_highlighting = warning +resharper_specify_string_comparison_highlighting = hint +resharper_spin_lock_in_readonly_field_highlighting = warning +resharper_stack_alloc_inside_loop_highlighting = warning +resharper_static_member_initializer_referes_to_member_below_highlighting = warning +resharper_static_member_in_generic_type_highlighting = warning +resharper_static_problem_in_text_highlighting = warning +resharper_std_is_constant_evaluated_will_always_evaluate_to_constant_highlighting = warning +resharper_stream_read_return_value_ignored_highlighting = warning +resharper_string_compare_is_culture_specific_1_highlighting = warning +resharper_string_compare_is_culture_specific_2_highlighting = warning +resharper_string_compare_is_culture_specific_3_highlighting = warning +resharper_string_compare_is_culture_specific_4_highlighting = warning +resharper_string_compare_is_culture_specific_5_highlighting = warning +resharper_string_compare_is_culture_specific_6_highlighting = warning +resharper_string_compare_to_is_culture_specific_highlighting = warning +resharper_string_ends_with_is_culture_specific_highlighting = none +resharper_string_index_of_is_culture_specific_1_highlighting = warning +resharper_string_index_of_is_culture_specific_2_highlighting = warning +resharper_string_index_of_is_culture_specific_3_highlighting = warning +resharper_string_last_index_of_is_culture_specific_1_highlighting = warning +resharper_string_last_index_of_is_culture_specific_2_highlighting = warning +resharper_string_last_index_of_is_culture_specific_3_highlighting = warning +resharper_string_literal_as_interpolation_argument_highlighting = suggestion +resharper_string_span_comparison_highlighting = warning +resharper_string_starts_with_is_culture_specific_highlighting = none +resharper_structured_message_template_problem_highlighting = warning +resharper_struct_can_be_made_read_only_highlighting = suggestion +resharper_struct_lacks_i_equatable_global_highlighting = warning +resharper_struct_lacks_i_equatable_local_highlighting = warning +resharper_struct_member_can_be_made_read_only_highlighting = none +resharper_suggest_base_type_for_parameter_highlighting = none +resharper_suggest_base_type_for_parameter_in_constructor_highlighting = none +resharper_suggest_discard_declaration_var_style_highlighting = hint +resharper_suggest_var_or_type_built_in_types_highlighting = hint +resharper_suggest_var_or_type_deconstruction_declarations_highlighting = hint +resharper_suggest_var_or_type_elsewhere_highlighting = hint +resharper_suggest_var_or_type_simple_types_highlighting = hint +resharper_suppress_nullable_warning_expression_as_inverted_is_expression_highlighting = warning +resharper_suspicious_lock_over_synchronization_primitive_highlighting = warning +resharper_suspicious_math_sign_method_highlighting = warning +resharper_suspicious_parameter_name_in_argument_null_exception_highlighting = warning +resharper_suspicious_type_conversion_global_highlighting = warning +resharper_swap_via_deconstruction_highlighting = suggestion +resharper_switch_expression_handles_some_known_enum_values_with_exception_in_default_highlighting = hint +resharper_switch_statement_for_enum_misses_default_section_highlighting = hint +resharper_switch_statement_handles_some_known_enum_values_with_default_highlighting = hint +resharper_switch_statement_missing_some_enum_cases_no_default_highlighting = hint +resharper_symbol_from_not_copied_locally_reference_used_warning_highlighting = warning +resharper_tabs_and_spaces_mismatch_highlighting = none +resharper_tabs_are_disallowed_highlighting = none +resharper_tabs_outside_indent_highlighting = none +resharper_tail_recursive_call_highlighting = hint +resharper_template_duplicate_property_problem_highlighting = warning +resharper_template_format_string_problem_highlighting = warning +resharper_template_is_not_compile_time_constant_problem_highlighting = warning +resharper_thread_static_at_instance_field_highlighting = warning +resharper_thread_static_field_has_initializer_highlighting = warning +resharper_too_wide_local_variable_scope_highlighting = suggestion +resharper_try_cast_always_succeeds_highlighting = suggestion +resharper_try_statements_can_be_merged_highlighting = hint +resharper_type_parameter_can_be_variant_highlighting = suggestion +resharper_type_with_suspicious_equality_is_used_in_record_global_highlighting = warning +resharper_type_with_suspicious_equality_is_used_in_record_local_highlighting = warning +resharper_unassigned_field_global_highlighting = suggestion +resharper_unassigned_field_local_highlighting = warning +resharper_unassigned_get_only_auto_property_highlighting = warning +resharper_unassigned_readonly_field_highlighting = warning +resharper_unclosed_script_highlighting = error +resharper_unexpected_attribute_highlighting = warning +resharper_unexpected_directive_highlighting = warning +resharper_unnecessary_whitespace_highlighting = none +resharper_unreachable_switch_arm_due_to_integer_analysis_highlighting = warning +resharper_unreachable_switch_case_due_to_integer_analysis_highlighting = warning +resharper_unsupported_required_base_type_highlighting = warning +resharper_unused_anonymous_method_signature_highlighting = warning +resharper_unused_auto_property_accessor_global_highlighting = warning +resharper_unused_auto_property_accessor_local_highlighting = warning +resharper_unused_import_clause_highlighting = warning +resharper_unused_local_function_highlighting = warning +resharper_unused_local_function_parameter_highlighting = warning +resharper_unused_local_function_return_value_highlighting = warning +resharper_unused_member_global_highlighting = suggestion +resharper_unused_member_hierarchy_global_highlighting = suggestion +resharper_unused_member_hierarchy_local_highlighting = warning +resharper_unused_member_in_super_global_highlighting = suggestion +resharper_unused_member_in_super_local_highlighting = warning +resharper_unused_member_local_highlighting = warning +resharper_unused_method_return_value_global_highlighting = suggestion +resharper_unused_method_return_value_local_highlighting = warning +resharper_unused_nullable_directive_highlighting = warning +resharper_unused_parameter_global_highlighting = suggestion +resharper_unused_parameter_in_partial_method_highlighting = warning +resharper_unused_parameter_local_highlighting = warning +resharper_unused_tuple_component_in_return_value_highlighting = warning +resharper_unused_type_global_highlighting = suggestion +resharper_unused_type_local_highlighting = warning +resharper_unused_type_parameter_highlighting = warning +resharper_unused_variable_highlighting = warning +resharper_usage_of_default_struct_equality_highlighting = warning +resharper_useless_binary_operation_highlighting = warning +resharper_useless_comparison_to_integral_constant_highlighting = warning +resharper_use_array_creation_expression_1_highlighting = suggestion +resharper_use_array_creation_expression_2_highlighting = suggestion +resharper_use_array_empty_method_highlighting = suggestion +resharper_use_await_using_highlighting = suggestion +resharper_use_cancellation_token_for_i_async_enumerable_highlighting = suggestion +resharper_use_collection_count_property_highlighting = suggestion +resharper_use_collection_expression_highlighting = suggestion +resharper_use_configure_await_false_for_async_disposable_highlighting = none +resharper_use_configure_await_false_highlighting = suggestion +resharper_use_deconstruction_highlighting = hint +resharper_use_discard_assignment_highlighting = suggestion +resharper_use_empty_types_field_highlighting = suggestion +resharper_use_event_args_empty_field_highlighting = suggestion +resharper_use_format_specifier_in_format_string_highlighting = suggestion +resharper_use_implicitly_typed_variable_evident_highlighting = hint +resharper_use_implicitly_typed_variable_highlighting = none +resharper_use_implicit_by_val_modifier_highlighting = hint +resharper_use_indexed_property_highlighting = suggestion +resharper_use_index_from_end_expression_highlighting = suggestion +resharper_use_method_any_0_highlighting = suggestion +resharper_use_method_any_1_highlighting = suggestion +resharper_use_method_any_2_highlighting = suggestion +resharper_use_method_any_3_highlighting = suggestion +resharper_use_method_any_4_highlighting = suggestion +resharper_use_nameof_expression_for_part_of_the_string_highlighting = none +resharper_use_nameof_expression_highlighting = suggestion +resharper_use_nameof_for_dependency_property_highlighting = suggestion +resharper_use_name_of_instead_of_type_of_highlighting = suggestion +resharper_use_negated_pattern_in_is_expression_highlighting = hint +resharper_use_negated_pattern_matching_highlighting = hint +resharper_use_nullable_annotation_instead_of_attribute_highlighting = suggestion +resharper_use_nullable_attributes_supported_by_compiler_highlighting = suggestion +resharper_use_nullable_reference_types_annotation_syntax_highlighting = warning +resharper_use_null_propagation_highlighting = hint +resharper_use_object_or_collection_initializer_highlighting = suggestion +resharper_use_pattern_matching_highlighting = suggestion +resharper_use_positional_deconstruction_pattern_highlighting = none +resharper_use_raw_string_highlighting = hint +resharper_use_string_interpolation_highlighting = suggestion +resharper_use_string_interpolation_when_possible_highlighting = hint +resharper_use_switch_case_pattern_variable_highlighting = suggestion +resharper_use_symbol_alias_highlighting = hint +resharper_use_throw_if_null_method_highlighting = none +resharper_use_unsigned_right_shift_operator_highlighting = suggestion +resharper_use_verbatim_string_highlighting = hint +resharper_use_with_expression_to_copy_anonymous_object_highlighting = suggestion +resharper_use_with_expression_to_copy_record_highlighting = suggestion +resharper_use_with_expression_to_copy_struct_highlighting = suggestion +resharper_use_with_expression_to_copy_tuple_highlighting = suggestion +resharper_using_statement_resource_initialization_expression_highlighting = hint +resharper_using_statement_resource_initialization_highlighting = warning +resharper_value_parameter_not_used_highlighting = warning +resharper_value_range_attribute_violation_highlighting = warning +resharper_variable_can_be_not_nullable_highlighting = warning +resharper_variable_hides_outer_variable_highlighting = warning +resharper_variable_length_string_hex_escape_sequence_highlighting = warning +resharper_virtual_member_call_in_constructor_highlighting = warning +resharper_virtual_member_never_overridden_global_highlighting = suggestion +resharper_virtual_member_never_overridden_local_highlighting = suggestion +resharper_void_method_with_must_dispose_resource_attribute_highlighting = warning +resharper_void_method_with_must_use_return_value_attribute_highlighting = warning +resharper_vulnerable_api_highlighting = warning +resharper_web_config_module_not_resolved_highlighting = warning +resharper_web_config_module_qualification_resolve_highlighting = warning +resharper_web_config_redundant_add_namespace_tag_highlighting = warning +resharper_web_config_redundant_location_tag_highlighting = warning +resharper_web_config_tag_prefix_redundand_highlighting = warning +resharper_web_config_type_not_resolved_highlighting = warning +resharper_web_config_unused_add_tag_highlighting = warning +resharper_web_config_unused_element_due_to_config_source_attribute_highlighting = warning +resharper_web_config_unused_remove_or_clear_tag_highlighting = warning +resharper_web_config_web_config_path_warning_highlighting = warning +resharper_web_config_wrong_module_highlighting = warning +resharper_web_ignored_path_highlighting = none +resharper_web_mapped_path_highlighting = hint +resharper_with_expression_instead_of_initializer_highlighting = suggestion +resharper_with_expression_modifies_all_members_highlighting = warning +resharper_wrong_indent_size_highlighting = none +resharper_xunit_xunit_test_with_console_output_highlighting = warning +resharper_zero_index_from_end_highlighting = warning diff --git a/Code/Light.SharedCore.sln b/Code/Light.SharedCore.sln index 7d06737..9594d8d 100644 --- a/Code/Light.SharedCore.sln +++ b/Code/Light.SharedCore.sln @@ -11,6 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution ProjectSection(SolutionItems) = preProject ..\.gitignore = ..\.gitignore ..\LICENSE = ..\LICENSE + .editorconfig = .editorconfig EndProjectSection EndProject Global diff --git a/Code/Light.SharedCore.sln.DotSettings b/Code/Light.SharedCore.sln.DotSettings deleted file mode 100644 index 6f2c888..0000000 --- a/Code/Light.SharedCore.sln.DotSettings +++ /dev/null @@ -1,82 +0,0 @@ - - True - SUGGESTION - DO_NOT_SHOW - DO_NOT_SHOW - True - Built-in: Full Cleanup - Built-in: Full Cleanup - False - Required - Required - Required - ExpressionBody - ExpressionBody - ExpressionBody - TargetTyped - False - True - True - True - True - True - True - True - True - True - True - True - TOGETHER_SAME_LINE - NO_INDENT - False - False - False - False - False - False - 1 - 3 - COMPACT - True - True - True - True - NEVER - ALWAYS - ALWAYS - ALWAYS - NEVER - False - ALWAYS - ALWAYS - NEVER - True - True - False - CHOP_IF_LONG - CHOP_IF_LONG - False - True - False - CHOP_IF_LONG - CHOP_IF_LONG - CHOP_IF_LONG - CHOP_IF_LONG - 150 - CHOP_ALWAYS - CHOP_IF_LONG - CHOP_ALWAYS - CHOP_IF_LONG - RemoveIndent - RemoveIndent - False - ByFirstAttr - 150 - False - False - True - False - True - True - True - True \ No newline at end of file From a690b799531fe0418581f7def17e646f8f4dcfc2 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 05:38:15 +0100 Subject: [PATCH 03/15] style: format code according to new rules --- .../Entities/GuidEntityTests.cs | 4 +- .../Entities/Int32EntityTests.cs | 5 +- .../Entities/Int64EntityTests.cs | 5 +- .../Entities/StringEntityTests.cs | 26 +++--- .../Light.SharedCore.Tests.csproj | 30 +++---- .../Parsing/DecimalParserTests.cs | 88 ++++++++++--------- .../Parsing/DoubleParserTests.cs | 8 +- .../Parsing/FloatParserTests.cs | 84 +++++++++--------- ...alculateIntervalForSameTimeNextDayTests.cs | 34 +++---- .../Time/CalculateIntervalUntilTests.cs | 41 +++++---- .../Time/LocalClockTests.cs | 5 +- .../Time/TestClockTests.cs | 36 ++++---- .../Time/TryConvertToTimeOfDayTests.cs | 47 ++++++---- .../Time/UtcClockTests.cs | 7 +- .../DatabaseAccessAbstractions/ISession.cs | 4 +- .../Entities/EntityExtensions.cs | 2 +- Code/Light.SharedCore/Entities/GuidEntity.cs | 5 +- Code/Light.SharedCore/Entities/IEntity.cs | 2 +- Code/Light.SharedCore/Entities/IMutableId.cs | 2 +- Code/Light.SharedCore/Entities/Int32Entity.cs | 8 +- Code/Light.SharedCore/Entities/Int64Entity.cs | 8 +- .../Light.SharedCore/Entities/StringEntity.cs | 32 +++++-- Code/Light.SharedCore/Light.SharedCore.csproj | 88 +++++++++---------- Code/Light.SharedCore/Parsing/Cultures.cs | 2 +- .../Light.SharedCore/Parsing/DecimalParser.cs | 6 +- Code/Light.SharedCore/Parsing/DoubleParser.cs | 8 +- Code/Light.SharedCore/Parsing/FloatParser.cs | 6 +- .../Parsing/FloatingPointAnalysis.cs | 6 +- .../Parsing/FloatingPointAnalysisResult.cs | 2 +- Code/Light.SharedCore/Time/IClock.cs | 2 +- Code/Light.SharedCore/Time/LocalClock.cs | 2 +- .../Time/ServiceCollectionExtensions.cs | 11 ++- Code/Light.SharedCore/Time/TestClock.cs | 9 +- Code/Light.SharedCore/Time/TimeExtensions.cs | 46 +++++++--- Code/Light.SharedCore/Time/UtcClock.cs | 2 +- 35 files changed, 379 insertions(+), 294 deletions(-) diff --git a/Code/Light.SharedCore.Tests/Entities/GuidEntityTests.cs b/Code/Light.SharedCore.Tests/Entities/GuidEntityTests.cs index 289ab44..7063945 100644 --- a/Code/Light.SharedCore.Tests/Entities/GuidEntityTests.cs +++ b/Code/Light.SharedCore.Tests/Entities/GuidEntityTests.cs @@ -151,7 +151,7 @@ public static void SetIdAfterInitializationShouldThrowWhenGuidIsEmpty() var action = () => new Entity().ToMutable().SetId(Guid.Empty); action.Should().Throw() - .And.ParamName.Should().Be("id"); + .And.ParamName.Should().Be("id"); } [Fact] @@ -176,4 +176,4 @@ public Entity() { } public Entity(Guid id) : base(id) { } } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Entities/Int32EntityTests.cs b/Code/Light.SharedCore.Tests/Entities/Int32EntityTests.cs index bd7ad9f..6f469b5 100644 --- a/Code/Light.SharedCore.Tests/Entities/Int32EntityTests.cs +++ b/Code/Light.SharedCore.Tests/Entities/Int32EntityTests.cs @@ -90,7 +90,8 @@ public static void TwoNullReferencesAreEqual() [InlineData(1)] [InlineData(12)] [InlineData(5000)] - public static void ToStringShouldReturnSimpleTypeNameAndId(int id) => new Entity(id).ToString().Should().Be("Entity " + id); + public static void ToStringShouldReturnSimpleTypeNameAndId(int id) => + new Entity(id).ToString().Should().Be("Entity " + id); [Theory] [MemberData(nameof(NegativeIds))] @@ -277,4 +278,4 @@ public Entity() { } public Entity(int id) : base(id) { } } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Entities/Int64EntityTests.cs b/Code/Light.SharedCore.Tests/Entities/Int64EntityTests.cs index 779e494..399ce3b 100644 --- a/Code/Light.SharedCore.Tests/Entities/Int64EntityTests.cs +++ b/Code/Light.SharedCore.Tests/Entities/Int64EntityTests.cs @@ -88,7 +88,8 @@ public static void TwoNullReferencesAreEqual() [InlineData(5L)] [InlineData(359_544L)] [InlineData(10001L)] - public static void ToStringShouldReturnSimpleTypeNameAndId(long id) => new Entity(id).ToString().Should().Be("Entity " + id); + public static void ToStringShouldReturnSimpleTypeNameAndId(long id) => + new Entity(id).ToString().Should().Be("Entity " + id); [Theory] [MemberData(nameof(NegativeIds))] @@ -274,4 +275,4 @@ private sealed class Entity : Int64Entity public Entity() { } public Entity(long id) : base(id) { } } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Entities/StringEntityTests.cs b/Code/Light.SharedCore.Tests/Entities/StringEntityTests.cs index 464f89d..b0ca5f3 100644 --- a/Code/Light.SharedCore.Tests/Entities/StringEntityTests.cs +++ b/Code/Light.SharedCore.Tests/Entities/StringEntityTests.cs @@ -7,6 +7,18 @@ namespace Light.SharedCore.Tests.Entities; public static class StringEntityTests { + public static TheoryData InvalidIds { get; } = + new () + { + null!, + string.Empty, + "\t", + " ", + " IdWithWhiteSpaceAtTheBeginning", + "IdWithWhiteSpaceAtTheEnd\r\n", + new string('x', 201) // Too long + }; + [Fact] public static void MustImplementIEntityOfString() => typeof(StringEntity<>).Should().Implement>(); @@ -163,18 +175,6 @@ public static void ExchangeValidationMethod(string technicallyInvalidId) } } - public static TheoryData InvalidIds { get; } = - new() - { - null!, - string.Empty, - "\t", - " ", - " IdWithWhiteSpaceAtTheBeginning", - "IdWithWhiteSpaceAtTheEnd\r\n", - new ('x', 201) // Too long - }; - private sealed class Entity : StringEntity { @@ -182,4 +182,4 @@ public Entity() { } public Entity(string id) : base(id) { } } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj b/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj index aedecdc..bc8457e 100644 --- a/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj +++ b/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj @@ -1,20 +1,20 @@ - - - - net8.0 - enable - false - + - - - - - - - - + + net8.0 + enable + false + + + + + + + + + + diff --git a/Code/Light.SharedCore.Tests/Parsing/DecimalParserTests.cs b/Code/Light.SharedCore.Tests/Parsing/DecimalParserTests.cs index eb7019a..5a5bb38 100644 --- a/Code/Light.SharedCore.Tests/Parsing/DecimalParserTests.cs +++ b/Code/Light.SharedCore.Tests/Parsing/DecimalParserTests.cs @@ -1,12 +1,52 @@ -using System; -using FluentAssertions; +using FluentAssertions; using Light.SharedCore.Parsing; using Xunit; +#if !NETFRAMEWORK +using System; +#endif namespace Light.SharedCore.Tests.Parsing; public static class DecimalParserTests { + public static readonly TheoryData NumbersWithDecimalPoint = + new () + { + { "0.74", 0.74m }, + { "1.34", 1.34m }, + { "391202.9", 391202.9m }, + { "-20.816", -20.816m }, + { "15,019.33", 15_019.33m } + }; + + public static readonly TheoryData DecimalCommaData = + new () + { + { "000,7832", 0.7832m }, + { "-0,499", -0.499m }, + { "40593,84", 40593.84m }, + { "1.943.100,84", 1_943_100.84m } + }; + + public static readonly TheoryData IntegerData = + new () + { + { "15", 15.0m }, + { "-743923", -743923.0m }, + { "239.482.392.923", 239_482_392_923.0m }, + { "21,500,000", 21_500_000.0m } + }; + + public static readonly TheoryData InvalidNumbers = + new () + { + "Foo", + "Bar", + "", + null, + "9392gk381" + }; + [Theory] [MemberData(nameof(NumbersWithDecimalPoint))] public static void ParseFloatingPointNumberWithDecimalPoint(string text, decimal expectedValue) => @@ -19,16 +59,6 @@ public static void ParseFloatingPointNumberWithDecimalPointAsSpan(string text, d CheckNumberAsSpan(text, expectedValue); #endif - public static readonly TheoryData NumbersWithDecimalPoint = - new () - { - { "0.74", 0.74m }, - { "1.34", 1.34m }, - { "391202.9", 391202.9m }, - { "-20.816", -20.816m }, - { "15,019.33", 15_019.33m } - }; - [Theory] [MemberData(nameof(DecimalCommaData))] public static void ParseFloatingPointNumberWithDecimalComma(string text, decimal expectedValue) => @@ -41,15 +71,6 @@ public static void ParseFloatingPointNumberWithDecimalCommaAsSpan(string text, d CheckNumberAsSpan(text, expectedValue); #endif - public static readonly TheoryData DecimalCommaData = - new () - { - { "000,7832", 0.7832m }, - { "-0,499", -0.499m }, - { "40593,84", 40593.84m }, - { "1.943.100,84", 1_943_100.84m } - }; - [Theory] [MemberData(nameof(IntegerData))] public static void ParseInteger(string text, decimal expectedValue) => @@ -62,15 +83,6 @@ public static void ParseIntegerAsSpan(string text, decimal expectedValue) => CheckNumberAsSpan(text, expectedValue); #endif - public static readonly TheoryData IntegerData = - new () - { - { "15", 15.0m }, - { "-743923", -743923.0m }, - { "239.482.392.923", 239_482_392_923.0m }, - { "21,500,000", 21_500_000.0m } - }; - private static void CheckNumber(string text, decimal expectedValue) { var result = DecimalParser.TryParse(text, out var parsedValue); @@ -96,7 +108,7 @@ public static void InvalidNumber(string? text) var result = DecimalParser.TryParse(text, out var actualValue); result.Should().BeFalse(); - actualValue.Should().Be(default); + actualValue.Should().Be(0); } #if !NETFRAMEWORK @@ -107,17 +119,7 @@ public static void InvalidNumberAsSpan(string? text) var result = DecimalParser.TryParse(text.AsSpan(), out var actualValue); result.Should().BeFalse(); - actualValue.Should().Be(default); + actualValue.Should().Be(0); } #endif - - public static readonly TheoryData InvalidNumbers = - new () - { - "Foo", - "Bar", - "", - null, - "9392gk381", - }; -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Parsing/DoubleParserTests.cs b/Code/Light.SharedCore.Tests/Parsing/DoubleParserTests.cs index 3adcf98..9c24bb9 100644 --- a/Code/Light.SharedCore.Tests/Parsing/DoubleParserTests.cs +++ b/Code/Light.SharedCore.Tests/Parsing/DoubleParserTests.cs @@ -44,7 +44,7 @@ public static void ParseFloatingPointNumberWithDecimalComma(string text, double public static void ParseFloatingPointNumberWithDecimalCommaAsSpan(string text, double expectedValue) => CheckNumberAsSpan(text, expectedValue); #endif - + public static readonly TheoryData NumbersWithDecimalComma = new () @@ -101,7 +101,7 @@ public static void InvalidNumber(string? text) var result = DoubleParser.TryParse(text, out var actualValue); result.Should().BeFalse(); - actualValue.Should().Be(default); + actualValue.Should().Be(0); } #if !NETFRAMEWORK @@ -112,7 +112,7 @@ public static void InvalidNumberAsSpan(string? text) var result = DoubleParser.TryParse(text.AsSpan(), out var actualValue); result.Should().BeFalse(); - actualValue.Should().Be(default); + actualValue.Should().Be(0); } #endif @@ -125,4 +125,4 @@ public static void InvalidNumberAsSpan(string? text) null, "9392gk381" }; -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Parsing/FloatParserTests.cs b/Code/Light.SharedCore.Tests/Parsing/FloatParserTests.cs index 0b09c49..e59c7a1 100644 --- a/Code/Light.SharedCore.Tests/Parsing/FloatParserTests.cs +++ b/Code/Light.SharedCore.Tests/Parsing/FloatParserTests.cs @@ -1,7 +1,9 @@ -using System; -using FluentAssertions; +using FluentAssertions; using Light.SharedCore.Parsing; using Xunit; +#if !NETFRAMEWORK +using System; +#endif namespace Light.SharedCore.Tests.Parsing; @@ -9,6 +11,44 @@ public static class FloatParserTests { private const float Precision = 0.000001f; + public static readonly TheoryData NumbersWithDecimalPoint = + new () + { + { "0.13", 0.13f }, + { "-3.41", -3.41f }, + { "10050.9", 10050.9f }, + { "-394.955", -394.955f }, + { "15,019.33", 15_019.33f } + }; + + public static readonly TheoryData NumbersWithDecimalComma = + new () + { + { "000,7832", 0.7832f }, + { "-0,499", -0.499f }, + { "40593,84", 40593.84f }, + { "1.943.100,84", 1_943_100.84f } + }; + + public static readonly TheoryData IntegerNumbers = + new () + { + { "15", 15.0f }, + { "-743923", -743923.0f }, + { "482.392.923", 482_392_923.0f }, + { "21,500,000", 21_500_000.0f } + }; + + public static readonly TheoryData InvalidNumbers = + new () + { + "Foo", + "Bar", + "", + null, + "9392gk381" + }; + [Theory] [MemberData(nameof(NumbersWithDecimalPoint))] public static void ParseFloatingPointNumberWithDecimalPoint(string text, float expectedValue) => @@ -21,16 +61,6 @@ public static void ParseFloatingPointNumberWithDecimalPointAsSpan(string text, f CheckNumberAsSpan(text, expectedValue); #endif - public static readonly TheoryData NumbersWithDecimalPoint = - new () - { - { "0.13", 0.13f }, - { "-3.41", -3.41f }, - { "10050.9", 10050.9f }, - { "-394.955", -394.955f }, - { "15,019.33", 15_019.33f } - }; - [Theory] [MemberData(nameof(NumbersWithDecimalComma))] public static void ParseFloatingPointNumberWithDecimalComma(string text, float expectedValue) => @@ -43,15 +73,6 @@ public static void ParseFloatingPointNumberWithDecimalCommaAsSpan(string text, f CheckNumberAsSpan(text, expectedValue); #endif - public static readonly TheoryData NumbersWithDecimalComma = - new () - { - { "000,7832", 0.7832f }, - { "-0,499", -0.499f }, - { "40593,84", 40593.84f }, - { "1.943.100,84", 1_943_100.84f } - }; - [Theory] [MemberData(nameof(IntegerNumbers))] public static void ParseInteger(string text, float expectedValue) => @@ -64,15 +85,6 @@ public static void ParseIntegerAsSpan(string text, float expectedValue) => CheckNumberAsSpan(text, expectedValue); #endif - public static readonly TheoryData IntegerNumbers = - new () - { - { "15", 15.0f }, - { "-743923", -743923.0f }, - { "482.392.923", 482_392_923.0f }, - { "21,500,000", 21_500_000.0f } - }; - private static void CheckNumber(string text, float expectedValue) { var result = FloatParser.TryParse(text, out var parsedValue); @@ -112,14 +124,4 @@ public static void InvalidNumberAsSpan(string? text) actualValue.Should().Be(default); } #endif - - public static readonly TheoryData InvalidNumbers = - new () - { - "Foo", - "Bar", - "", - null, - "9392gk381", - }; -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Time/CalculateIntervalForSameTimeNextDayTests.cs b/Code/Light.SharedCore.Tests/Time/CalculateIntervalForSameTimeNextDayTests.cs index 7b52405..a684a8b 100644 --- a/Code/Light.SharedCore.Tests/Time/CalculateIntervalForSameTimeNextDayTests.cs +++ b/Code/Light.SharedCore.Tests/Time/CalculateIntervalForSameTimeNextDayTests.cs @@ -9,18 +9,29 @@ namespace Light.SharedCore.Tests.Time; public static class CalculateIntervalForSameTimeNextDayTests { - [Theory] - [MemberData(nameof(NonSpecificData))] - public static void CalculateTimeOfNextDayInNonSpecificCultureScenario(DateTime now, TimeSpan expected) => - CheckTimeSpan(now, expected); - public static readonly TheoryData NonSpecificData = new () { - { new (2017, 10, 4, 12, 0, 0, DateTimeKind.Local), new (16, 15, 0) }, // Simple example - { new (2016, 12, 31, 4, 15, 1, DateTimeKind.Local), new (23, 59, 59) }, // New Year's Eve + { new DateTime(2017, 10, 4, 12, 0, 0, DateTimeKind.Local), new TimeSpan(16, 15, 0) }, // Simple example + { new DateTime(2016, 12, 31, 4, 15, 1, DateTimeKind.Local), new TimeSpan(23, 59, 59) } // New Year's Eve + }; + + public static readonly TheoryData GermanSpecificData = + new () + { + { + new DateTime(2017, 03, 25, 18, 0, 0, DateTimeKind.Local), new TimeSpan(9, 15, 0) + }, // Begin of Daylight Saving Time + { + new DateTime(2017, 10, 28, 18, 0, 0, DateTimeKind.Local), new TimeSpan(11, 15, 0) + } // End of Daylight Saving Time }; + [Theory] + [MemberData(nameof(NonSpecificData))] + public static void CalculateTimeOfNextDayInNonSpecificCultureScenario(DateTime now, TimeSpan expected) => + CheckTimeSpan(now, expected); + [SkippableTheory] [MemberData(nameof(GermanSpecificData))] public static void CalculateTimeOfNextDayInGermanScenario(DateTime now, TimeSpan expected) @@ -29,17 +40,10 @@ public static void CalculateTimeOfNextDayInGermanScenario(DateTime now, TimeSpan CheckTimeSpan(now, expected); } - public static readonly TheoryData GermanSpecificData = - new () - { - { new (2017, 03, 25, 18, 0, 0, DateTimeKind.Local), new (9, 15, 0) }, // Begin of Daylight Saving Time - { new (2017, 10, 28, 18, 0, 0, DateTimeKind.Local), new (11, 15, 0) } // End of Daylight Saving Time - }; - private static void CheckTimeSpan(DateTime now, TimeSpan expected) { var startTime = new DateTime(1, 1, 1, 4, 15, 0, DateTimeKind.Local); var actualTimeSpan = now.CalculateIntervalForSameTimeNextDay(startTime); actualTimeSpan.Should().Be(expected); } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Time/CalculateIntervalUntilTests.cs b/Code/Light.SharedCore.Tests/Time/CalculateIntervalUntilTests.cs index 6d91033..2ebb0e3 100644 --- a/Code/Light.SharedCore.Tests/Time/CalculateIntervalUntilTests.cs +++ b/Code/Light.SharedCore.Tests/Time/CalculateIntervalUntilTests.cs @@ -10,21 +10,35 @@ namespace Light.SharedCore.Tests.Time; public static class CalculateIntervalUntilTests { private static readonly DateTime StartTime = new (1, 1, 1, 4, 15, 0, DateTimeKind.Local); - - [Theory] - [MemberData(nameof(NonSpecificData))] - public static void CalculateIntervalInNonSpecificCultureScenario(DateTime now, TimeSpan expected) => - CheckTimeSpan(now, expected); public static readonly TheoryData NonSpecificData = new () { - { new (2017, 10, 4, 4, 12, 0, DateTimeKind.Local), new (0, 3, 0) }, // Time is on same day - { new (2017, 10, 4, 4, 16, 0, DateTimeKind.Local), new (23, 59, 0) }, // Time is on next day - { new (2016, 12, 31, 4, 15, 1, DateTimeKind.Local), new (23, 59, 59) }, // New Year's Eve - { new (2017, 10, 4, StartTime.Hour, StartTime.Minute, StartTime.Second, DateTimeKind.Local), new (24, 0, 0) }, // Exactly same time + { new DateTime(2017, 10, 4, 4, 12, 0, DateTimeKind.Local), new TimeSpan(0, 3, 0) }, // Time is on same day + { new DateTime(2017, 10, 4, 4, 16, 0, DateTimeKind.Local), new TimeSpan(23, 59, 0) }, // Time is on next day + { new DateTime(2016, 12, 31, 4, 15, 1, DateTimeKind.Local), new TimeSpan(23, 59, 59) }, // New Year's Eve + { + new DateTime(2017, 10, 4, StartTime.Hour, StartTime.Minute, StartTime.Second, DateTimeKind.Local), + new TimeSpan(24, 0, 0) + } // Exactly same time + }; + + public static readonly TheoryData GermanSpecificData = + new () + { + { + new DateTime(2017, 03, 25, 18, 0, 0, DateTimeKind.Local), new TimeSpan(9, 15, 0) + }, // Begin of Daylight Saving Time + { + new DateTime(2017, 10, 28, 18, 0, 0, DateTimeKind.Local), new TimeSpan(11, 15, 0) + } // End of Daylight Saving Time }; + [Theory] + [MemberData(nameof(NonSpecificData))] + public static void CalculateIntervalInNonSpecificCultureScenario(DateTime now, TimeSpan expected) => + CheckTimeSpan(now, expected); + [SkippableTheory] [MemberData(nameof(GermanSpecificData))] public static void CalculateTimeOfNextDayInGermanScenario(DateTime now, TimeSpan expected) @@ -33,16 +47,9 @@ public static void CalculateTimeOfNextDayInGermanScenario(DateTime now, TimeSpan CheckTimeSpan(now, expected); } - public static readonly TheoryData GermanSpecificData = - new () - { - { new (2017, 03, 25, 18, 0, 0, DateTimeKind.Local), new (9, 15, 0) }, // Begin of Daylight Saving Time - { new (2017, 10, 28, 18, 0, 0, DateTimeKind.Local), new (11, 15, 0) } // End of Daylight Saving Time - }; - private static void CheckTimeSpan(DateTime now, TimeSpan expected) { var actualTimeSpan = now.CalculateIntervalUntil(StartTime); actualTimeSpan.Should().Be(expected); } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Time/LocalClockTests.cs b/Code/Light.SharedCore.Tests/Time/LocalClockTests.cs index 1b3d6dd..7ca8106 100644 --- a/Code/Light.SharedCore.Tests/Time/LocalClockTests.cs +++ b/Code/Light.SharedCore.Tests/Time/LocalClockTests.cs @@ -11,5 +11,6 @@ public static class LocalClockTests public static void MustReturnLocalTime() => new LocalClock().GetTime().Kind.Should().Be(DateTimeKind.Local); [Fact] - public static void TimeMustBeCloseToLocalTime() => new LocalClock().GetTime().Should().BeCloseTo(DateTime.Now, TimeSpan.FromSeconds(1)); -} \ No newline at end of file + public static void TimeMustBeCloseToLocalTime() => + new LocalClock().GetTime().Should().BeCloseTo(DateTime.Now, TimeSpan.FromSeconds(1)); +} diff --git a/Code/Light.SharedCore.Tests/Time/TestClockTests.cs b/Code/Light.SharedCore.Tests/Time/TestClockTests.cs index b73eda8..b60efed 100644 --- a/Code/Light.SharedCore.Tests/Time/TestClockTests.cs +++ b/Code/Light.SharedCore.Tests/Time/TestClockTests.cs @@ -7,6 +7,22 @@ namespace Light.SharedCore.Tests.Time; public static class TestClockTests { + public static readonly TheoryData CustomDateTimes = + new () + { + new DateTime(2018, 12, 4, 9, 22, 15, DateTimeKind.Local), + new DateTime(2010, 5, 19, 15, 37, 0, DateTimeKind.Unspecified), + new DateTime(1975, 2, 28, 12, 0, 0, DateTimeKind.Utc) + }; + + public static readonly TheoryData TimeSpans = + new () + { + TimeSpan.FromSeconds(50), + TimeSpan.FromDays(14), + TimeSpan.FromMilliseconds(750) + }; + [Fact] public static void DefaultTimeIsSetToUtcNow() { @@ -27,14 +43,6 @@ public static void SpecifyCustomInitialDateTime(DateTime customDateTime) testClock.GetTime().Should().Be(customDateTime); } - public static readonly TheoryData CustomDateTimes = - new () - { - new (2018, 12, 4, 9, 22, 15, DateTimeKind.Local), - new (2010, 5, 19, 15, 37, 0, DateTimeKind.Unspecified), - new (1975, 2, 28, 12, 0, 0, DateTimeKind.Utc) - }; - [Theory] [MemberData(nameof(TimeSpans))] public static void AdvanceTime(TimeSpan timeSpan) @@ -44,14 +52,6 @@ public static void AdvanceTime(TimeSpan timeSpan) resultingTime.Should().Be(testClock.InitialTime.Add(timeSpan)); } - public static readonly TheoryData TimeSpans = - new () - { - TimeSpan.FromSeconds(50), - TimeSpan.FromDays(14), - TimeSpan.FromMilliseconds(750) - }; - [Fact] public static void ProvideSeveralTimes() { @@ -60,7 +60,7 @@ public static void ProvideSeveralTimes() var thirdTime = initialTime.AddHours(5); var testClock = new TestClock(initialTime, secondTime, thirdTime); - var capturedTimes = new [] + var capturedTimes = new[] { testClock.GetTime(), testClock.GetTime(), @@ -123,4 +123,4 @@ public static void MixedMode() var time3 = testClock.GetTime(); time3.Should().Be(secondTime.AddHours(2)); } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Time/TryConvertToTimeOfDayTests.cs b/Code/Light.SharedCore.Tests/Time/TryConvertToTimeOfDayTests.cs index 458edd1..7169dbc 100644 --- a/Code/Light.SharedCore.Tests/Time/TryConvertToTimeOfDayTests.cs +++ b/Code/Light.SharedCore.Tests/Time/TryConvertToTimeOfDayTests.cs @@ -7,6 +7,23 @@ namespace Light.SharedCore.Tests.Time; public static class TryConvertToTimeOfDayTests { + public static readonly TheoryData ValidTimeSpans = + new () + { + new TimeSpan(23, 59, 59), + TimeSpan.Zero, + new TimeSpan(5, 23, 59, 59), // The days part is ignored + new TimeSpan(0, 23, 59, 59, 999) + }; + + public static readonly TheoryData InvalidTimeSpans = + new () + { + TimeSpan.FromHours(-1), + new TimeSpan(-1, -23, 0), + new TimeSpan(-5, 20, 0) + }; + [Theory] [MemberData(nameof(ValidTimeSpans))] public static void ConvertValidValueToLocalTimeOfDay(TimeSpan timeSpan) @@ -23,19 +40,19 @@ public static void ConvertValidValueToUtcTimeOfDay(TimeSpan timeSpan) CheckValidResult(timeSpan, result, timeOfDay, DateTimeKind.Utc); } - public static readonly TheoryData ValidTimeSpans = - new () - { - new (23, 59, 59), - TimeSpan.Zero, - new (5, 23, 59, 59), // The days part is ignored - new (0, 23, 59, 59, 999) - }; - private static void CheckValidResult(TimeSpan timeSpan, bool result, DateTime timeOfDay, DateTimeKind expectedKind) { result.Should().BeTrue(); - var expectedTimeOfDay = new DateTime(1, 1, 1, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds, expectedKind); + var expectedTimeOfDay = new DateTime( + 1, + 1, + 1, + timeSpan.Hours, + timeSpan.Minutes, + timeSpan.Seconds, + timeSpan.Milliseconds, + expectedKind + ); timeOfDay.Should().Be(expectedTimeOfDay); } @@ -47,12 +64,4 @@ public static void ConversionFailsForInvalidTimeSpans(TimeSpan invalidTimeSpan) result.Should().BeFalse(); timeOfDay.Should().Be(default); } - - public static readonly TheoryData InvalidTimeSpans = - new () - { - TimeSpan.FromHours(-1), - new (-1, -23, 0), - new (-5, 20, 0) - }; -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore.Tests/Time/UtcClockTests.cs b/Code/Light.SharedCore.Tests/Time/UtcClockTests.cs index 8c5207c..a0c5997 100644 --- a/Code/Light.SharedCore.Tests/Time/UtcClockTests.cs +++ b/Code/Light.SharedCore.Tests/Time/UtcClockTests.cs @@ -5,14 +5,13 @@ namespace Light.SharedCore.Tests.Time; - public static class UtcClockTests { [Fact] - public static void MustReturnUtcTime() => + public static void MustReturnUtcTime() => new UtcClock().GetTime().Kind.Should().Be(DateTimeKind.Utc); [Fact] - public static void ReturnedTimeMustBeCloseToUtcNow() => + public static void ReturnedTimeMustBeCloseToUtcNow() => new UtcClock().GetTime().Should().BeCloseTo(DateTime.UtcNow, TimeSpan.FromSeconds(1)); -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs b/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs index 9f90f11..de8a2df 100644 --- a/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs +++ b/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs @@ -17,7 +17,7 @@ namespace Light.SharedCore.DatabaseAccessAbstractions; /// /// /// If you don't want the caller to explicitly commit the changes, consider deriving your session from -/// directly. +/// directly. /// /// /// @@ -34,4 +34,4 @@ public interface ISession : IAsyncDisposable /// /// The token to cancel this asynchronous operation (optional). Task SaveChangesAsync(CancellationToken cancellationToken = default); -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Entities/EntityExtensions.cs b/Code/Light.SharedCore/Entities/EntityExtensions.cs index 2c1da34..fe6495a 100644 --- a/Code/Light.SharedCore/Entities/EntityExtensions.cs +++ b/Code/Light.SharedCore/Entities/EntityExtensions.cs @@ -27,4 +27,4 @@ public static class EntityExtensions /// The cast entity /// Thrown when the specified entity cannot be cast to public static IMutableId ToMutable(this IEntity entity) where T : IEquatable => (IMutableId) entity; -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Entities/GuidEntity.cs b/Code/Light.SharedCore/Entities/GuidEntity.cs index a614dc4..30d2ab3 100644 --- a/Code/Light.SharedCore/Entities/GuidEntity.cs +++ b/Code/Light.SharedCore/Entities/GuidEntity.cs @@ -86,7 +86,10 @@ public bool Equals(T? other) => private static Guid ValidateId(Guid id, string parameterName) { if (!AllowEmptyGuid) + { id.MustNotBeEmpty(parameterName); + } + return id; } @@ -135,4 +138,4 @@ protected GuidEntity() { } /// /// The ID for the entity. protected GuidEntity(Guid id) : base(id) { } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Entities/IEntity.cs b/Code/Light.SharedCore/Entities/IEntity.cs index c820f33..9dee923 100644 --- a/Code/Light.SharedCore/Entities/IEntity.cs +++ b/Code/Light.SharedCore/Entities/IEntity.cs @@ -13,4 +13,4 @@ public interface IEntity /// Gets the ID of the entity. /// T Id { get; } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Entities/IMutableId.cs b/Code/Light.SharedCore/Entities/IMutableId.cs index d16adca..97fdc8f 100644 --- a/Code/Light.SharedCore/Entities/IMutableId.cs +++ b/Code/Light.SharedCore/Entities/IMutableId.cs @@ -29,4 +29,4 @@ public interface IMutableId /// /// The new ID for the entity. void SetId(T id); -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Entities/Int32Entity.cs b/Code/Light.SharedCore/Entities/Int32Entity.cs index abb37b5..694fd63 100644 --- a/Code/Light.SharedCore/Entities/Int32Entity.cs +++ b/Code/Light.SharedCore/Entities/Int32Entity.cs @@ -57,9 +57,15 @@ public bool Equals(T? other) => private static int ValidateId(int id, string parameterName) { if (!AllowIdZero && id == 0) + { throw new ArgumentOutOfRangeException(parameterName, $"{parameterName} must not be 0."); + } + if (!AllowNegativeIds) + { id.MustNotBeLessThan(0, parameterName); + } + return id; } @@ -127,4 +133,4 @@ public override bool Equals(object? @object) => /// or when is negative and is false. /// void IMutableId.SetId(int id) => _id = ValidateId(id, nameof(id)); -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Entities/Int64Entity.cs b/Code/Light.SharedCore/Entities/Int64Entity.cs index 8b6c5a4..da6a9d6 100644 --- a/Code/Light.SharedCore/Entities/Int64Entity.cs +++ b/Code/Light.SharedCore/Entities/Int64Entity.cs @@ -56,9 +56,15 @@ public bool Equals(T? other) => private static long ValidateId(long id, string parameterName) { if (!AllowIdZero && id == 0L) + { throw new ArgumentOutOfRangeException(parameterName, $"{parameterName} must not be 0."); + } + if (!AllowNegativeIds) + { id.MustNotBeLessThan(0L, parameterName); + } + return id; } @@ -145,4 +151,4 @@ protected Int64Entity() { } /// /// The ID for the entity. protected Int64Entity(long id) : base(id) { } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Entities/StringEntity.cs b/Code/Light.SharedCore/Entities/StringEntity.cs index 26968e4..8eee014 100644 --- a/Code/Light.SharedCore/Entities/StringEntity.cs +++ b/Code/Light.SharedCore/Entities/StringEntity.cs @@ -42,9 +42,12 @@ protected StringEntity() { } /// and being not trimmed. You can customize the validation process via /// . /// - protected StringEntity(string id) => _id = ValidateId(id, nameof(id)); + protected StringEntity(string id) => + _id = ValidateId( + id, + nameof(id) + ); // ReSharper disable StaticMemberInGenericType -- this is by design. We want to have different settings for different subtypes - // ReSharper disable StaticMemberInGenericType -- this is by design. We want to have different settings for different subtypes /// /// /// Gets or sets the delegate that is used to validate IDs. @@ -63,8 +66,8 @@ public static ValidateIdDelegate ValidateId } /// - /// Gets or sets the value indicating whether the default value for is null. - /// This defaults to true. If you set this value to false, will be set + /// Gets or sets the value indicating whether the default value for is null. + /// This defaults to true. If you set this value to false, will be set /// to . /// public static bool IsDefaultValueNull { get; set; } = true; @@ -131,9 +134,18 @@ public static string ValidateTrimmedNotWhiteSpaceShorterThanOrEqualTo200(string { id.MustNotBeNullOrWhiteSpace(parameterName); if (id[0].IsWhiteSpace() || id[id.Length - 1].IsWhiteSpace()) + { throw new StringException(parameterName, $"The ID must be trimmed, but you specified {id}"); + } + if (id.Length > 200) - throw new StringLengthException(parameterName, $"The ID should not be longer than 200 characters, but the following ID is {id.Length} characters long:{Environment.NewLine}{id}"); + { + throw new StringLengthException( + parameterName, + $"The ID should not be longer than 200 characters, but the following ID is {id.Length} characters long:{Environment.NewLine}{id}" + ); + } + return id; } @@ -151,8 +163,10 @@ public override int GetHashCode() { // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract if (Id is null) + { return 0; - + } + // ReSharper disable once NonReadonlyMemberInGetHashCode -- this must be handled properly by the caller. var comparisonMode = ComparisonMode; return comparisonMode switch @@ -163,7 +177,9 @@ public override int GetHashCode() StringComparison.InvariantCultureIgnoreCase => StringComparer.InvariantCultureIgnoreCase.GetHashCode(Id), StringComparison.Ordinal => Id.GetHashCode(), StringComparison.OrdinalIgnoreCase => StringComparer.OrdinalIgnoreCase.GetHashCode(Id), - _ => throw new InvalidOperationException($"The ComparisonMode property is set to an invalid value {comparisonMode}") + _ => throw new InvalidOperationException( + $"The ComparisonMode property is set to an invalid value {comparisonMode}" + ) }; } @@ -200,4 +216,4 @@ protected StringEntity() { } /// /// The ID of the entity. protected StringEntity(string id) : base(id) { } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Light.SharedCore.csproj b/Code/Light.SharedCore/Light.SharedCore.csproj index 2e21d81..aefa5f9 100644 --- a/Code/Light.SharedCore/Light.SharedCore.csproj +++ b/Code/Light.SharedCore/Light.SharedCore.csproj @@ -1,49 +1,49 @@ - - netstandard2.0;netstandard2.1 - enable - 12.0 - 2.0.0 - Kenny Pflug - Kenny Pflug - Copyright © Kenny Pflug 2022, 2024 - Provides common abstractions and in-memory infrastructure for writing .NET apps. - database-access-abstractions;clock;number-parsing;entities - true - true - light-logo.png - true - https://github.com/feO2x/Light.SharedCore - https://github.com/feO2x/Light.SharedCore.git - git - true - true - snupkg - true - MIT - readme.md - -Light.SharedCore 2.0.0 --------------------------------- + + netstandard2.0;netstandard2.1 + enable + 12.0 + 2.0.0 + Kenny Pflug + Kenny Pflug + Copyright © Kenny Pflug 2022, 2024 + Provides common abstractions and in-memory infrastructure for writing .NET apps. + database-access-abstractions;clock;number-parsing;entities + true + true + light-logo.png + true + https://github.com/feO2x/Light.SharedCore + https://github.com/feO2x/Light.SharedCore.git + git + true + true + snupkg + true + MIT + readme.md + + Light.SharedCore 2.0.0 + -------------------------------- -- removed IAsyncFactory and service provider extensions -- DatabaseAccessAbstractions is the new namespace containing session interfaces -- reduced external dependencies -- read all docs at https://github.com/feO2x/Light.SharedCore - - - - - - - - - - - - - - + - removed IAsyncFactory and service provider extensions + - DatabaseAccessAbstractions is the new namespace containing session interfaces + - reduced external dependencies + - read all docs at https://github.com/feO2x/Light.SharedCore + + + + + + + + + + + + + + diff --git a/Code/Light.SharedCore/Parsing/Cultures.cs b/Code/Light.SharedCore/Parsing/Cultures.cs index 12f9f44..f1fce16 100644 --- a/Code/Light.SharedCore/Parsing/Cultures.cs +++ b/Code/Light.SharedCore/Parsing/Cultures.cs @@ -16,4 +16,4 @@ public static class Cultures /// Gets the German culture. /// public static CultureInfo GermanCulture { get; } = new ("de-DE"); -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Parsing/DecimalParser.cs b/Code/Light.SharedCore/Parsing/DecimalParser.cs index 354043e..65b6f14 100644 --- a/Code/Light.SharedCore/Parsing/DecimalParser.cs +++ b/Code/Light.SharedCore/Parsing/DecimalParser.cs @@ -58,7 +58,7 @@ public static bool TryParse(string? text, NumberStyles style, out decimal value) { if (text.IsNullOrWhiteSpace()) { - value = default; + value = 0; return false; } @@ -117,7 +117,7 @@ public static bool TryParse(ReadOnlySpan text, NumberStyles style, out dec { if (text.IsWhiteSpace()) { - value = default; + value = 0; return false; } @@ -126,4 +126,4 @@ public static bool TryParse(ReadOnlySpan text, NumberStyles style, out dec return decimal.TryParse(text, style, cultureInfo, out value); } #endif -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Parsing/DoubleParser.cs b/Code/Light.SharedCore/Parsing/DoubleParser.cs index c962a85..755c841 100644 --- a/Code/Light.SharedCore/Parsing/DoubleParser.cs +++ b/Code/Light.SharedCore/Parsing/DoubleParser.cs @@ -58,7 +58,7 @@ public static bool TryParse(string? text, NumberStyles style, out double value) { if (text.IsNullOrWhiteSpace()) { - value = default; + value = 0; return false; } @@ -117,7 +117,7 @@ public static bool TryParse(ReadOnlySpan text, NumberStyles style, out dou { if (text.IsWhiteSpace()) { - value = default; + value = 0; return false; } @@ -125,5 +125,5 @@ public static bool TryParse(ReadOnlySpan text, NumberStyles style, out dou var cultureInfo = result.ChooseCultureInfo(); return double.TryParse(text, style, cultureInfo, out value); } -#endif -} \ No newline at end of file +#endif +} diff --git a/Code/Light.SharedCore/Parsing/FloatParser.cs b/Code/Light.SharedCore/Parsing/FloatParser.cs index eea767a..9bd799f 100644 --- a/Code/Light.SharedCore/Parsing/FloatParser.cs +++ b/Code/Light.SharedCore/Parsing/FloatParser.cs @@ -58,7 +58,7 @@ public static bool TryParse(string? text, NumberStyles style, out float value) { if (text.IsNullOrWhiteSpace()) { - value = default; + value = 0; return false; } @@ -117,7 +117,7 @@ public static bool TryParse(ReadOnlySpan text, NumberStyles style, out flo { if (text.IsWhiteSpace()) { - value = default; + value = 0; return false; } @@ -126,4 +126,4 @@ public static bool TryParse(ReadOnlySpan text, NumberStyles style, out flo return float.TryParse(text, style, cultureInfo, out value); } #endif -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Parsing/FloatingPointAnalysis.cs b/Code/Light.SharedCore/Parsing/FloatingPointAnalysis.cs index 6a0faaa..68f4bd0 100644 --- a/Code/Light.SharedCore/Parsing/FloatingPointAnalysis.cs +++ b/Code/Light.SharedCore/Parsing/FloatingPointAnalysis.cs @@ -15,7 +15,7 @@ public static class FloatingPointAnalysis /// to determine the decimal sign and thousand-delimiter sign /// in strings. /// - /// The read-only span that points the the text to be analysed. + /// The read-only span that points the text to be analysed. /// A structure that holds all results. public static FloatingPointAnalysisResult AnalyseText(ReadOnlySpan text) { @@ -40,6 +40,6 @@ public static FloatingPointAnalysisResult AnalyseText(ReadOnlySpan text) } } - return new (numberOfCommas, indexOfLastComma, numberOfPoints, indexOfLastPoint); + return new FloatingPointAnalysisResult(numberOfCommas, indexOfLastComma, numberOfPoints, indexOfLastPoint); } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs b/Code/Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs index 3b1d626..81834b2 100644 --- a/Code/Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs +++ b/Code/Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs @@ -35,4 +35,4 @@ public CultureInfo ChooseCultureInfo() return IndexOfLastComma > IndexOfLastPoint ? Cultures.GermanCulture : Cultures.InvariantCulture; } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Time/IClock.cs b/Code/Light.SharedCore/Time/IClock.cs index f3d2282..598a8ae 100644 --- a/Code/Light.SharedCore/Time/IClock.cs +++ b/Code/Light.SharedCore/Time/IClock.cs @@ -11,4 +11,4 @@ public interface IClock /// Gets the current time. /// DateTime GetTime(); -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Time/LocalClock.cs b/Code/Light.SharedCore/Time/LocalClock.cs index 55cbced..90caed4 100644 --- a/Code/Light.SharedCore/Time/LocalClock.cs +++ b/Code/Light.SharedCore/Time/LocalClock.cs @@ -13,4 +13,4 @@ public sealed class LocalClock : IClock /// Gets the local time. /// public DateTime GetTime() => DateTime.Now; -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Time/ServiceCollectionExtensions.cs b/Code/Light.SharedCore/Time/ServiceCollectionExtensions.cs index a3b5b8d..546bfda 100644 --- a/Code/Light.SharedCore/Time/ServiceCollectionExtensions.cs +++ b/Code/Light.SharedCore/Time/ServiceCollectionExtensions.cs @@ -12,17 +12,20 @@ public static class ServiceCollectionExtensions /// Adds the as a singleton to the service collection, mapped to . /// /// Thrown when is null. - public static IServiceCollection AddUtcClock(this IServiceCollection services) => services.AddSingleton(new UtcClock()); + public static IServiceCollection AddUtcClock(this IServiceCollection services) => + services.AddSingleton(new UtcClock()); /// /// Adds the as a singleton to the service collection, mapped to . /// /// Thrown when is null. - public static IServiceCollection AddLocalClock(this IServiceCollection services) => services.AddSingleton(new LocalClock()); + public static IServiceCollection AddLocalClock(this IServiceCollection services) => + services.AddSingleton(new LocalClock()); /// /// Adds the as a singleton to the service collection, mapped to . /// /// Thrown when is null. - public static IServiceCollection AddTestClock(this IServiceCollection services) => services.AddSingleton(new TestClock()); -} \ No newline at end of file + public static IServiceCollection AddTestClock(this IServiceCollection services) => + services.AddSingleton(new TestClock()); +} diff --git a/Code/Light.SharedCore/Time/TestClock.cs b/Code/Light.SharedCore/Time/TestClock.cs index dbcb076..882ff09 100644 --- a/Code/Light.SharedCore/Time/TestClock.cs +++ b/Code/Light.SharedCore/Time/TestClock.cs @@ -9,7 +9,8 @@ namespace Light.SharedCore.Time; /// public sealed class TestClock : IClock { - private TestTimesEnumerator _testTimes; // This field MUST NOT be readonly, the struct instance must be able to mutate its state + // This field MUST NOT be readonly, the struct instance must be able to mutate its state + private TestTimesEnumerator _testTimes; /// /// Initializes a new instance of . @@ -37,7 +38,7 @@ public sealed class TestClock : IClock public TestClock(params DateTime[] times) { times.MustNotBeNullOrEmpty(); - _testTimes = new (times); + _testTimes = new TestTimesEnumerator(times); _testTimes.TryGetNextTime(out var initialTime); InitialTime = CurrentTime = initialTime; } @@ -76,7 +77,9 @@ public TestClock AdvanceTime(TimeSpan timeSpan) private void TrySetNextTestTime() { if (_testTimes.TryGetNextTime(out var nextTime)) + { CurrentTime = nextTime; + } } private struct TestTimesEnumerator @@ -103,4 +106,4 @@ public bool TryGetNextTime(out DateTime nextTime) return true; } } -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Time/TimeExtensions.cs b/Code/Light.SharedCore/Time/TimeExtensions.cs index d573e7d..17d5380 100644 --- a/Code/Light.SharedCore/Time/TimeExtensions.cs +++ b/Code/Light.SharedCore/Time/TimeExtensions.cs @@ -15,26 +15,35 @@ public static class TimeExtensions public static TimeSpan CalculateIntervalForSameTimeNextDay(this DateTime now, DateTime timeOfDay) { var tomorrow = now.AddDays(1.0); - var targetDateTime = new DateTime(tomorrow.Year, tomorrow.Month, tomorrow.Day, timeOfDay.Hour, timeOfDay.Minute, timeOfDay.Second, timeOfDay.Millisecond, timeOfDay.Kind); + var targetDateTime = new DateTime( + tomorrow.Year, + tomorrow.Month, + tomorrow.Day, + timeOfDay.Hour, + timeOfDay.Minute, + timeOfDay.Second, + timeOfDay.Millisecond, + timeOfDay.Kind + ); return targetDateTime.ToUniversalTime() - now.ToUniversalTime(); } /// - /// Calculates the time span from until . If - /// was already reached on this day, the interval will be calculated + /// Calculates the time span from until . If + /// was already reached on this day, the interval will be calculated /// for tomorrow. /// /// - /// Returns a time span of 24 hours if is exactly . - /// > + /// Returns a time span of 24 hours if is exactly . + /// + /// > /// The current time. /// The target time of the day. The date part of this value will be ignored. public static TimeSpan CalculateIntervalUntil(this DateTime now, DateTime timeOfDay) { - var timeOfToday = new DateTime(now.Year, now.Month, now.Day, timeOfDay.Hour, timeOfDay.Minute, timeOfDay.Second); - return timeOfToday > now - ? timeOfToday - now - : now.CalculateIntervalForSameTimeNextDay(timeOfDay); + var timeOfToday = + new DateTime(now.Year, now.Month, now.Day, timeOfDay.Hour, timeOfDay.Minute, timeOfDay.Second); + return timeOfToday > now ? timeOfToday - now : now.CalculateIntervalForSameTimeNextDay(timeOfDay); } /// @@ -47,7 +56,11 @@ public static TimeSpan CalculateIntervalUntil(this DateTime now, DateTime timeOf /// The resulting date time value when the conversion was successful. /// The kind of the resulting date time. The default value is . /// True if the conversion was successful, else false. - public static bool TryConvertToTimeOfDay(this TimeSpan timeSpan, out DateTime dateTime, DateTimeKind kind = DateTimeKind.Local) + public static bool TryConvertToTimeOfDay( + this TimeSpan timeSpan, + out DateTime dateTime, + DateTimeKind kind = DateTimeKind.Local + ) { if (timeSpan.Hours >= 24 || timeSpan < TimeSpan.Zero) { @@ -55,7 +68,16 @@ public static bool TryConvertToTimeOfDay(this TimeSpan timeSpan, out DateTime da return false; } - dateTime = new (1, 1, 1, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds, kind); + dateTime = new DateTime( + 1, + 1, + 1, + timeSpan.Hours, + timeSpan.Minutes, + timeSpan.Seconds, + timeSpan.Milliseconds, + kind + ); return true; } @@ -70,4 +92,4 @@ public static bool TryConvertToTimeOfDay(this TimeSpan timeSpan, out DateTime da /// True if the conversion was successful, else false public static bool TryConvertToUtcTimeOfDay(this TimeSpan timeSpan, out DateTime dateTime) => timeSpan.TryConvertToTimeOfDay(out dateTime, DateTimeKind.Utc); -} \ No newline at end of file +} diff --git a/Code/Light.SharedCore/Time/UtcClock.cs b/Code/Light.SharedCore/Time/UtcClock.cs index e9f7917..b4d9a96 100644 --- a/Code/Light.SharedCore/Time/UtcClock.cs +++ b/Code/Light.SharedCore/Time/UtcClock.cs @@ -14,4 +14,4 @@ public sealed class UtcClock : IClock /// Gets the current UTC time. /// public DateTime GetTime() => DateTime.UtcNow; -} \ No newline at end of file +} From 6806d0688fd09aa440180f41919cebc35bc78e2e Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 05:40:39 +0100 Subject: [PATCH 04/15] chore: migrate from .sln to .slnx Signed-off-by: Kenny Pflug --- Code/Light.SharedCore.sln | 35 ----------------------------------- Code/Light.SharedCore.slnx | 9 +++++++++ 2 files changed, 9 insertions(+), 35 deletions(-) delete mode 100644 Code/Light.SharedCore.sln create mode 100644 Code/Light.SharedCore.slnx diff --git a/Code/Light.SharedCore.sln b/Code/Light.SharedCore.sln deleted file mode 100644 index 9594d8d..0000000 --- a/Code/Light.SharedCore.sln +++ /dev/null @@ -1,35 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31903.59 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Light.SharedCore", "Light.SharedCore\Light.SharedCore.csproj", "{5098C1AA-263E-4BA6-B4E2-4088EE4B11DA}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Light.SharedCore.Tests", "Light.SharedCore.Tests\Light.SharedCore.Tests.csproj", "{98C694E2-B859-45DE-91FF-F6D9408958D0}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F823A522-F6D0-4E02-92A8-E9246B1799A1}" - ProjectSection(SolutionItems) = preProject - ..\.gitignore = ..\.gitignore - ..\LICENSE = ..\LICENSE - .editorconfig = .editorconfig - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {5098C1AA-263E-4BA6-B4E2-4088EE4B11DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5098C1AA-263E-4BA6-B4E2-4088EE4B11DA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5098C1AA-263E-4BA6-B4E2-4088EE4B11DA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5098C1AA-263E-4BA6-B4E2-4088EE4B11DA}.Release|Any CPU.Build.0 = Release|Any CPU - {98C694E2-B859-45DE-91FF-F6D9408958D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98C694E2-B859-45DE-91FF-F6D9408958D0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98C694E2-B859-45DE-91FF-F6D9408958D0}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98C694E2-B859-45DE-91FF-F6D9408958D0}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal diff --git a/Code/Light.SharedCore.slnx b/Code/Light.SharedCore.slnx new file mode 100644 index 0000000..17a4e8f --- /dev/null +++ b/Code/Light.SharedCore.slnx @@ -0,0 +1,9 @@ + + + + + + + + + From f6353d0fbf949bee6cdeb3b921be9e8f5f3a279b Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 05:49:44 +0100 Subject: [PATCH 05/15] ci: adapt build-and-test.yml for new slnx format, adjust target branches Signed-off-by: Kenny Pflug --- .github/workflows/build-and-test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 1c2f508..4eb9f06 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -2,10 +2,10 @@ name: Build and Test on: push: - branches: [main, dev] + branches: [main] paths: ['Code/**', 'build-and-test.yml'] pull_request: - branches: [main, dev] + branches: [main] paths: ['Code/**', 'build-and-test.yml'] jobs: @@ -20,8 +20,8 @@ jobs: with: dotnet-version: 8.0.x - name: Restore dependencies - run: dotnet restore ./Code/Light.SharedCore.sln + run: dotnet restore ./Code/Light.SharedCore.slnx - name: Build - run: dotnet build ./Code/Light.SharedCore.sln -c Release --no-restore + run: dotnet build ./Code/Light.SharedCore.slnx -c Release --no-restore - name: Test run: dotnet test ./Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj -c Release --no-build --verbosity normal From 7a107cb5a406d6006993a05cf6869f3641932a33 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 06:01:48 +0100 Subject: [PATCH 06/15] build: update nuget packages, jump to .NET 9 Signed-off-by: Kenny Pflug --- .../Light.SharedCore.Tests.csproj | 10 +++++----- Code/Light.SharedCore/Light.SharedCore.csproj | 18 +++++++++--------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj b/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj index bc8457e..d24aa61 100644 --- a/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj +++ b/Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj @@ -3,17 +3,17 @@ - net8.0 + net9.0 enable false - - - - + + + + diff --git a/Code/Light.SharedCore/Light.SharedCore.csproj b/Code/Light.SharedCore/Light.SharedCore.csproj index aefa5f9..8fdeb4b 100644 --- a/Code/Light.SharedCore/Light.SharedCore.csproj +++ b/Code/Light.SharedCore/Light.SharedCore.csproj @@ -3,7 +3,7 @@ netstandard2.0;netstandard2.1 enable - 12.0 + 13.0 2.0.0 Kenny Pflug Kenny Pflug @@ -24,21 +24,21 @@ MIT readme.md - Light.SharedCore 2.0.0 - -------------------------------- +Light.SharedCore 2.0.0 +-------------------------------- - - removed IAsyncFactory and service provider extensions - - DatabaseAccessAbstractions is the new namespace containing session interfaces - - reduced external dependencies - - read all docs at https://github.com/feO2x/Light.SharedCore +- removed IAsyncFactory and service provider extensions +- DatabaseAccessAbstractions is the new namespace containing session interfaces +- reduced external dependencies +- read all docs at https://github.com/feO2x/Light.SharedCore - + - + From 692c938568ea30cd108de3835098b978263d2a50 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 06:04:47 +0100 Subject: [PATCH 07/15] ci: update workflows to use .NET 9 Signed-off-by: Kenny Pflug --- .github/workflows/build-and-test.yml | 4 ++-- .github/workflows/release-on-nuget.yml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 4eb9f06..8ff18f2 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -16,9 +16,9 @@ jobs: steps: - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: - dotnet-version: 8.0.x + dotnet-version: 9.0.x - name: Restore dependencies run: dotnet restore ./Code/Light.SharedCore.slnx - name: Build diff --git a/.github/workflows/release-on-nuget.yml b/.github/workflows/release-on-nuget.yml index d512bdd..01ba207 100644 --- a/.github/workflows/release-on-nuget.yml +++ b/.github/workflows/release-on-nuget.yml @@ -8,7 +8,7 @@ on: dotnetVersion: description: "The version of .NET to use" required: false - default: "8.0.x" + default: "9.0.x" jobs: release-to-nuget: @@ -18,9 +18,9 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v3 + uses: actions/setup-dotnet@v4 with: - dotnet-version: ${{ github.event.inputs.dotnetVersion || '8.0.x' }} + dotnet-version: ${{ github.event.inputs.dotnetVersion || '9.0.x' }} - name: Prepare SNK file env: LIGHT_SHAREDCORE_SNK: ${{ secrets.LIGHT_SHAREDCORE_SNK }} From 5ee0a2e52b3bf3219cf83c5c6db4442615b65e86 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:15:48 +0100 Subject: [PATCH 08/15] chore: move contents of Code folder into repository root --- Code/.editorconfig => .editorconfig | 0 .github/workflows/build-and-test.yml | 6 +++--- .github/workflows/release-on-nuget.yml | 8 ++++---- Code/Light.SharedCore.slnx | 9 --------- Code/Light.SharedCore/Light.SharedCore.Public.snk | Bin 160 -> 0 bytes .../Entities/GuidEntityTests.cs | 0 .../Entities/Int32EntityTests.cs | 0 .../Entities/Int64EntityTests.cs | 0 .../Entities/StringEntityTests.cs | 0 .../Light.SharedCore.Tests.csproj | 0 .../Parsing/DecimalParserTests.cs | 0 .../Parsing/DoubleParserTests.cs | 0 .../Parsing/FloatParserTests.cs | 0 .../CalculateIntervalForSameTimeNextDayTests.cs | 0 .../Time/CalculateIntervalUntilTests.cs | 0 .../Time/LocalClockTests.cs | 0 .../Time/TestClockTests.cs | 0 .../Time/TryConvertToTimeOfDayTests.cs | 0 .../Time/UtcClockTests.cs | 0 .../testsettings.json | 0 Light.SharedCore.slnx | 13 +++++++++++++ .../CreateNuGetPackages.cmd | 0 .../DatabaseAccessAbstractions/ISession.cs | 0 .../Entities/EntityExtensions.cs | 0 .../Entities/GuidEntity.cs | 0 .../Entities/IEntity.cs | 0 .../Entities/IMutableId.cs | 0 .../Entities/Int32Entity.cs | 0 .../Entities/Int64Entity.cs | 0 .../Entities/StringEntity.cs | 0 .../Light.SharedCore.csproj | 0 .../Parsing/Cultures.cs | 0 .../Parsing/DecimalParser.cs | 0 .../Parsing/DoubleParser.cs | 0 .../Parsing/FloatParser.cs | 0 .../Parsing/FloatingPointAnalysis.cs | 0 .../Parsing/FloatingPointAnalysisResult.cs | 0 .../Time/IClock.cs | 0 .../Time/LocalClock.cs | 0 .../Time/ServiceCollectionExtensions.cs | 0 .../Time/TestClock.cs | 0 .../Time/TimeExtensions.cs | 0 .../Time/UtcClock.cs | 0 43 files changed, 20 insertions(+), 16 deletions(-) rename Code/.editorconfig => .editorconfig (100%) delete mode 100644 Code/Light.SharedCore.slnx delete mode 100644 Code/Light.SharedCore/Light.SharedCore.Public.snk rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Entities/GuidEntityTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Entities/Int32EntityTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Entities/Int64EntityTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Entities/StringEntityTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Light.SharedCore.Tests.csproj (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Parsing/DecimalParserTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Parsing/DoubleParserTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Parsing/FloatParserTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Time/CalculateIntervalForSameTimeNextDayTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Time/CalculateIntervalUntilTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Time/LocalClockTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Time/TestClockTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Time/TryConvertToTimeOfDayTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/Time/UtcClockTests.cs (100%) rename {Code/Light.SharedCore.Tests => Light.SharedCore.Tests}/testsettings.json (100%) create mode 100644 Light.SharedCore.slnx rename {Code/Light.SharedCore => Light.SharedCore}/CreateNuGetPackages.cmd (100%) rename {Code/Light.SharedCore => Light.SharedCore}/DatabaseAccessAbstractions/ISession.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Entities/EntityExtensions.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Entities/GuidEntity.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Entities/IEntity.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Entities/IMutableId.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Entities/Int32Entity.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Entities/Int64Entity.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Entities/StringEntity.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Light.SharedCore.csproj (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Parsing/Cultures.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Parsing/DecimalParser.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Parsing/DoubleParser.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Parsing/FloatParser.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Parsing/FloatingPointAnalysis.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Parsing/FloatingPointAnalysisResult.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Time/IClock.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Time/LocalClock.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Time/ServiceCollectionExtensions.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Time/TestClock.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Time/TimeExtensions.cs (100%) rename {Code/Light.SharedCore => Light.SharedCore}/Time/UtcClock.cs (100%) diff --git a/Code/.editorconfig b/.editorconfig similarity index 100% rename from Code/.editorconfig rename to .editorconfig diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 8ff18f2..0444cc3 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -20,8 +20,8 @@ jobs: with: dotnet-version: 9.0.x - name: Restore dependencies - run: dotnet restore ./Code/Light.SharedCore.slnx + run: dotnet restore ./Light.SharedCore.slnx - name: Build - run: dotnet build ./Code/Light.SharedCore.slnx -c Release --no-restore + run: dotnet build ./Light.SharedCore.slnx -c Release --no-restore - name: Test - run: dotnet test ./Code/Light.SharedCore.Tests/Light.SharedCore.Tests.csproj -c Release --no-build --verbosity normal + run: dotnet test ./Light.SharedCore.Tests/Light.SharedCore.Tests.csproj -c Release --no-build --verbosity normal diff --git a/.github/workflows/release-on-nuget.yml b/.github/workflows/release-on-nuget.yml index 01ba207..499a7f9 100644 --- a/.github/workflows/release-on-nuget.yml +++ b/.github/workflows/release-on-nuget.yml @@ -25,12 +25,12 @@ jobs: env: LIGHT_SHAREDCORE_SNK: ${{ secrets.LIGHT_SHAREDCORE_SNK }} run: | - echo $LIGHT_SHAREDCORE_SNK | base64 --decode > ./Code/Light.SharedCore/Light.SharedCore.snk + echo $LIGHT_SHAREDCORE_SNK | base64 --decode > ./Light.SharedCore/Light.SharedCore.snk - name: Create NuGet packages - run: dotnet pack ./Code/Light.SharedCore/Light.SharedCore.csproj -c Release /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=Light.SharedCore.snk /p:ContinuousIntegrationBuild=true + run: dotnet pack ./Light.SharedCore/Light.SharedCore.csproj -c Release /p:SignAssembly=true /p:AssemblyOriginatorKeyFile=Light.SharedCore.snk /p:ContinuousIntegrationBuild=true - name: Delete SNK file - run: rm ./Code/Light.SharedCore/Light.SharedCore.snk + run: rm ./Light.SharedCore/Light.SharedCore.snk - name: Push nupkg package env: NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} - run: dotnet nuget push "./Code/Light.SharedCore/bin/Release/Light.SharedCore.*.nupkg" --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json + run: dotnet nuget push "./Light.SharedCore/bin/Release/Light.SharedCore.*.nupkg" --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json diff --git a/Code/Light.SharedCore.slnx b/Code/Light.SharedCore.slnx deleted file mode 100644 index 17a4e8f..0000000 --- a/Code/Light.SharedCore.slnx +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/Code/Light.SharedCore/Light.SharedCore.Public.snk b/Code/Light.SharedCore/Light.SharedCore.Public.snk deleted file mode 100644 index 6f81999ab05ea50959a4ef4da47f9d948720c24a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK$ABme*efB*oL000060ssI2Bme+XQ$aBR1ONa50098KnygU7X}B!?9Z_sV zQ%{NaR63Cz2GuD1rLXp_^O-~D&R0^GF5-gv6lFNLe#40zq%M)D?~zOQ zs<5-x + + + + + + + + + + + + \ No newline at end of file diff --git a/Code/Light.SharedCore/CreateNuGetPackages.cmd b/Light.SharedCore/CreateNuGetPackages.cmd similarity index 100% rename from Code/Light.SharedCore/CreateNuGetPackages.cmd rename to Light.SharedCore/CreateNuGetPackages.cmd diff --git a/Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs b/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs similarity index 100% rename from Code/Light.SharedCore/DatabaseAccessAbstractions/ISession.cs rename to Light.SharedCore/DatabaseAccessAbstractions/ISession.cs diff --git a/Code/Light.SharedCore/Entities/EntityExtensions.cs b/Light.SharedCore/Entities/EntityExtensions.cs similarity index 100% rename from Code/Light.SharedCore/Entities/EntityExtensions.cs rename to Light.SharedCore/Entities/EntityExtensions.cs diff --git a/Code/Light.SharedCore/Entities/GuidEntity.cs b/Light.SharedCore/Entities/GuidEntity.cs similarity index 100% rename from Code/Light.SharedCore/Entities/GuidEntity.cs rename to Light.SharedCore/Entities/GuidEntity.cs diff --git a/Code/Light.SharedCore/Entities/IEntity.cs b/Light.SharedCore/Entities/IEntity.cs similarity index 100% rename from Code/Light.SharedCore/Entities/IEntity.cs rename to Light.SharedCore/Entities/IEntity.cs diff --git a/Code/Light.SharedCore/Entities/IMutableId.cs b/Light.SharedCore/Entities/IMutableId.cs similarity index 100% rename from Code/Light.SharedCore/Entities/IMutableId.cs rename to Light.SharedCore/Entities/IMutableId.cs diff --git a/Code/Light.SharedCore/Entities/Int32Entity.cs b/Light.SharedCore/Entities/Int32Entity.cs similarity index 100% rename from Code/Light.SharedCore/Entities/Int32Entity.cs rename to Light.SharedCore/Entities/Int32Entity.cs diff --git a/Code/Light.SharedCore/Entities/Int64Entity.cs b/Light.SharedCore/Entities/Int64Entity.cs similarity index 100% rename from Code/Light.SharedCore/Entities/Int64Entity.cs rename to Light.SharedCore/Entities/Int64Entity.cs diff --git a/Code/Light.SharedCore/Entities/StringEntity.cs b/Light.SharedCore/Entities/StringEntity.cs similarity index 100% rename from Code/Light.SharedCore/Entities/StringEntity.cs rename to Light.SharedCore/Entities/StringEntity.cs diff --git a/Code/Light.SharedCore/Light.SharedCore.csproj b/Light.SharedCore/Light.SharedCore.csproj similarity index 100% rename from Code/Light.SharedCore/Light.SharedCore.csproj rename to Light.SharedCore/Light.SharedCore.csproj diff --git a/Code/Light.SharedCore/Parsing/Cultures.cs b/Light.SharedCore/Parsing/Cultures.cs similarity index 100% rename from Code/Light.SharedCore/Parsing/Cultures.cs rename to Light.SharedCore/Parsing/Cultures.cs diff --git a/Code/Light.SharedCore/Parsing/DecimalParser.cs b/Light.SharedCore/Parsing/DecimalParser.cs similarity index 100% rename from Code/Light.SharedCore/Parsing/DecimalParser.cs rename to Light.SharedCore/Parsing/DecimalParser.cs diff --git a/Code/Light.SharedCore/Parsing/DoubleParser.cs b/Light.SharedCore/Parsing/DoubleParser.cs similarity index 100% rename from Code/Light.SharedCore/Parsing/DoubleParser.cs rename to Light.SharedCore/Parsing/DoubleParser.cs diff --git a/Code/Light.SharedCore/Parsing/FloatParser.cs b/Light.SharedCore/Parsing/FloatParser.cs similarity index 100% rename from Code/Light.SharedCore/Parsing/FloatParser.cs rename to Light.SharedCore/Parsing/FloatParser.cs diff --git a/Code/Light.SharedCore/Parsing/FloatingPointAnalysis.cs b/Light.SharedCore/Parsing/FloatingPointAnalysis.cs similarity index 100% rename from Code/Light.SharedCore/Parsing/FloatingPointAnalysis.cs rename to Light.SharedCore/Parsing/FloatingPointAnalysis.cs diff --git a/Code/Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs b/Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs similarity index 100% rename from Code/Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs rename to Light.SharedCore/Parsing/FloatingPointAnalysisResult.cs diff --git a/Code/Light.SharedCore/Time/IClock.cs b/Light.SharedCore/Time/IClock.cs similarity index 100% rename from Code/Light.SharedCore/Time/IClock.cs rename to Light.SharedCore/Time/IClock.cs diff --git a/Code/Light.SharedCore/Time/LocalClock.cs b/Light.SharedCore/Time/LocalClock.cs similarity index 100% rename from Code/Light.SharedCore/Time/LocalClock.cs rename to Light.SharedCore/Time/LocalClock.cs diff --git a/Code/Light.SharedCore/Time/ServiceCollectionExtensions.cs b/Light.SharedCore/Time/ServiceCollectionExtensions.cs similarity index 100% rename from Code/Light.SharedCore/Time/ServiceCollectionExtensions.cs rename to Light.SharedCore/Time/ServiceCollectionExtensions.cs diff --git a/Code/Light.SharedCore/Time/TestClock.cs b/Light.SharedCore/Time/TestClock.cs similarity index 100% rename from Code/Light.SharedCore/Time/TestClock.cs rename to Light.SharedCore/Time/TestClock.cs diff --git a/Code/Light.SharedCore/Time/TimeExtensions.cs b/Light.SharedCore/Time/TimeExtensions.cs similarity index 100% rename from Code/Light.SharedCore/Time/TimeExtensions.cs rename to Light.SharedCore/Time/TimeExtensions.cs diff --git a/Code/Light.SharedCore/Time/UtcClock.cs b/Light.SharedCore/Time/UtcClock.cs similarity index 100% rename from Code/Light.SharedCore/Time/UtcClock.cs rename to Light.SharedCore/Time/UtcClock.cs From d801369efb20ff47d77e395ba90bb65cd385397f Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:18:31 +0100 Subject: [PATCH 09/15] build: update package release notes for v3 release --- Light.SharedCore/Light.SharedCore.csproj | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Light.SharedCore/Light.SharedCore.csproj b/Light.SharedCore/Light.SharedCore.csproj index 8fdeb4b..2a059d2 100644 --- a/Light.SharedCore/Light.SharedCore.csproj +++ b/Light.SharedCore/Light.SharedCore.csproj @@ -4,10 +4,10 @@ netstandard2.0;netstandard2.1 enable 13.0 - 2.0.0 + 3.0.0 Kenny Pflug Kenny Pflug - Copyright © Kenny Pflug 2022, 2024 + Copyright © Kenny Pflug 2022, 2025 Provides common abstractions and in-memory infrastructure for writing .NET apps. database-access-abstractions;clock;number-parsing;entities true @@ -24,12 +24,10 @@ MIT readme.md -Light.SharedCore 2.0.0 +Light.SharedCore 3.0.0 -------------------------------- -- removed IAsyncFactory and service provider extensions -- DatabaseAccessAbstractions is the new namespace containing session interfaces -- reduced external dependencies +- overhaul DatabaseAccessAbstractions: only ISession is left, all other interfaces were removed - read all docs at https://github.com/feO2x/Light.SharedCore From b65f958419e98c14972395813bfde780a0d83026 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:20:01 +0100 Subject: [PATCH 10/15] docs: update readme for v3 release --- readme.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/readme.md b/readme.md index efa9c07..1b4b06e 100644 --- a/readme.md +++ b/readme.md @@ -1,10 +1,11 @@ # Light.SharedCore + *Provides general abstractions, algorithms, and data structures for .NET* ![Light Logo](light-logo.png) [![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](https://github.com/feO2x/Light.SharedCore/blob/main/LICENSE) -[![NuGet](https://img.shields.io/badge/NuGet-2.0.0-blue.svg?style=for-the-badge)](https://www.nuget.org/packages/Light.SharedCore/) +[![NuGet](https://img.shields.io/badge/NuGet-3.0.0-blue.svg?style=for-the-badge)](https://www.nuget.org/packages/Light.SharedCore/) # How to install @@ -12,7 +13,7 @@ Light.SharedCore is compiled against [.NET Standard 2.0 and 2.1](https://docs.mi Light.SharedCore is available as a [NuGet package](https://www.nuget.org/packages/Light.SharedCore/) and can be installed via: -- **Package Reference in csproj**: `` +- **Package Reference in csproj**: `` - **dotnet CLI**: `dotnet add package Light.SharedCore` - **Visual Studio Package Manager Console**: `Install-Package Light.SharedCore` @@ -259,10 +260,8 @@ Prefer UTC time stamps, especially in services and when saving date and time val ## Database access abstractions -This package offers interfaces for accessing databases. Both the `IAsyncSession` and `ISession` interfaces represent the [Unit-of-Work Design Pattern](https://www.martinfowler.com/eaaCatalog/unitOfWork.html). We strongly recommend to use `IAsyncSession` by default as all database I/O should be executed in an asynchronous fashion to avoid threads being blocked during database queries. This is especially important when you try to scale service apps. Incoming requests will usually be handled by executing code on the .NET Thread Pool (e.g. in ASP.NET Core) which in turn will create new threads when it sees that its worker threads are blocked. With a high number of concurrent requests, you might end up in a situation where your service app responds really slowly because of all the overhead of new threads being created and the context switches between them (thread starvation). - -However, some data access libraries do not support asynchronous queries. As of June 2024, e.g. SQLite did not override the asynchronous methods of ADO.NET - all calls will always be executed synchronously (even when you call the async APIs, like `DbConnection.OpenAsync`). You can resort to `ISession` in these circumstances. Please make sure that your ADO.NET provider overrides async methods properly. +This package offers a new base interface for designing abstractions for database access. The `ISession` interface represents the [Unit-of-Work Design Pattern](https://www.martinfowler.com/eaaCatalog/unitOfWork.html) and offers a `Task SaveChangesAsync(CancellationToken)` method to explicitly trigger a commit to the underlying database access technology. This could be committing a transaction when using ADO.NET or Micro-ORMs like LinqToDB, Dapper, or MongoDB.Driver, as well as calling `SaveChangesAsync` on an Entity Framework Core `DbContext` for Full-ORMs. The `ISession` interface also derives from `IAsyncDisposable`. When the session is disposed before `SaveChangesAsync` is called, a rollback will be automatically executed by underlying implementations. -There is also an `IAsyncReadOnlySession` interface that derives from both `IDisposable` and `IAsyncDisposable`. It can be used to create abstractions for sessions that only read data and do not require an explicit transaction. +If you have been using Light.SharedCore in previous versions, you might wonder where the `IAsyncReadOnlySession` interface has gone. It has been removed in favor of simply using `IAsyncDisposable`. If you design database sessions that essentially behave like a client (without explicit transaction management by the caller), then simply derive your abstraction from `IAsyncDisposable` instead of the old `IAsyncReadOnlySession`. Also, all synchronous database interfaces as well as the sessions supporting transactions are gone (the current recommendation is to completely hide transaction objects like `DbTransaction` from business logic by implemeting specialized sessions). -If you need to support several transactions during a database session, then use the `IAsyncTransactionalSession` (or `ITransactionalSession`) interfaces. Instead of a `SaveChangesAsync` method, you can use this session type to manually begin transactions by calling `BeginTransactionAsync`. You can then save your changes by committing the transaction. Please be aware that you should not nest transaction, i.e. you should not call `BeginTransactionAsync` again while you still have an existing transaction in your current scope. \ No newline at end of file + All database I/O should be executed in an asynchronous fashion to avoid threads being blocked during database queries. This is especially important when you try to scale service apps. Incoming requests will normally be handled by executing code on the .NET Thread Pool (e.g. in ASP.NET Core) which in turn will create new threads when it sees that its worker threads are blocked. With a high number of concurrent requests, you might end up in a situation where your service app responds really slowly because of all the overhead of new threads being created and the context switches between them (thread starvation). \ No newline at end of file From a47e5586bbc901d99bb3fd4572f075181ec57a9e Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:26:00 +0100 Subject: [PATCH 11/15] fix: references to light-logo.png and readme.md in Light.SharedCore.csproj --- Light.SharedCore/Light.SharedCore.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Light.SharedCore/Light.SharedCore.csproj b/Light.SharedCore/Light.SharedCore.csproj index 2a059d2..85d89f7 100644 --- a/Light.SharedCore/Light.SharedCore.csproj +++ b/Light.SharedCore/Light.SharedCore.csproj @@ -40,8 +40,8 @@ Light.SharedCore 3.0.0 - - + + From 5ee7ddeca6228d8d61c8cd4c20a53ad0cbfa0c47 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:30:54 +0100 Subject: [PATCH 12/15] fix: branch paths for build-and-test.yml --- .github/workflows/build-and-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 0444cc3..089963c 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -3,10 +3,10 @@ name: Build and Test on: push: branches: [main] - paths: ['Code/**', 'build-and-test.yml'] + paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**' 'build-and-test.yml'] pull_request: branches: [main] - paths: ['Code/**', 'build-and-test.yml'] + paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**', 'build-and-test.yml'] jobs: build-and-test: From bcc98bc692d6df375a280907ae81d98d3bc6019a Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:36:24 +0100 Subject: [PATCH 13/15] fix: add missing comma in build-and-test.yml --- .github/workflows/build-and-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 089963c..63ee0b4 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -3,7 +3,7 @@ name: Build and Test on: push: branches: [main] - paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**' 'build-and-test.yml'] + paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**', 'build-and-test.yml'] pull_request: branches: [main] paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**', 'build-and-test.yml'] From 9ac805cf628e3c01ccf47d096b14edc698bed510 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:40:40 +0100 Subject: [PATCH 14/15] fix: provide correct path to build-and-test.yml --- .github/workflows/build-and-test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 63ee0b4..435ffc3 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -3,10 +3,10 @@ name: Build and Test on: push: branches: [main] - paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**', 'build-and-test.yml'] + paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**', '.github/workflows/build-and-test.yml'] pull_request: branches: [main] - paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**', 'build-and-test.yml'] + paths: ['Light.SharedCore/**', 'Light.SharedCore.Tests/**', '.github/workflows/build-and-test.yml'] jobs: build-and-test: From ffd028e4a8343f1bfe50b32158f6224e39b05fa9 Mon Sep 17 00:00:00 2001 From: Kenny Pflug Date: Tue, 25 Mar 2025 07:47:39 +0100 Subject: [PATCH 15/15] docs: add note about TimeProvider in readme --- readme.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/readme.md b/readme.md index 1b4b06e..d1e7e67 100644 --- a/readme.md +++ b/readme.md @@ -190,6 +190,8 @@ Light.SharedCore also offers you the `FloatParser` and the `DecimalParser`. Furt ## Abstract from DateTime.UtcNow by using IClock +> While .NET 8 introduced the `TimeProvider` class, we think that this API is too verbose (including its timer functionality). This is why we stick to the `IClock` interface of Light.SharedCore and promote using it. + Light.SharedCore provides the `IClock` interface that abstracts calls to `DateTime.Now` and `DateTime.UtcNow`. This is usually required when testing your code, and you want to supply dedicated `DateTime` values to better control your tests. `IClock` has a method called `GetTime` that you can use to obtain the current time stamp. There are three implementations for `IClock`: