Skip to content

Commit 45025bf

Browse files
committed
New class AppDomainSyncRootRegistry in WizardWrx.Core
1 parent 1be8a01 commit 45025bf

87 files changed

Lines changed: 2862 additions & 338 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
0 Bytes
Binary file not shown.
2.5 KB
Binary file not shown.
10 KB
Binary file not shown.

AssemblyUtils/bin/Debug/WizardWrx.Core.xml

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4626,6 +4626,160 @@
46264626
Looks up a localized string similar to " InnerException = [null].
46274627
</summary>
46284628
</member>
4629+
<member name="T:WizardWrx.AppDomainSyncRootRegistry">
4630+
<summary>
4631+
Provides a centralized, thread-safe registry of <see cref="T:WizardWrx.SyncRoot"/>
4632+
objects keyed by symbolic names. Each key maps to exactly one
4633+
synchronization object for the lifetime of the application domain.
4634+
</summary>
4635+
<remarks>
4636+
The canonical key format for typed overloads is:
4637+
4638+
{AssemblyQualifiedTypeName}.{MethodName}
4639+
4640+
Use the typed overloads to get strict metadata validation. The raw-key
4641+
overload is provided for advanced scenarios where the caller constructs
4642+
a collision-proof key manually.
4643+
</remarks>
4644+
</member>
4645+
<member name="T:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry">
4646+
<summary>
4647+
Internal entry that associates a <see cref="T:WizardWrx.SyncRoot"/> with the
4648+
metadata used to construct its key.
4649+
</summary>
4650+
</member>
4651+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.LockableObject">
4652+
<summary>
4653+
This read-only WizardWrx.SyncRoot object reference holds a
4654+
reference to the synchronization object itself.
4655+
</summary>
4656+
</member>
4657+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.DeclaringType">
4658+
<summary>
4659+
This read-only System.Type object reference holds a reference to
4660+
the Type information supplied in the request to dispense a
4661+
SyncRoot object against which to hold a lock.
4662+
</summary>
4663+
</member>
4664+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.MethodName">
4665+
<summary>
4666+
This read-only System.String holds a reference to the name of
4667+
the method that made the request for a SyncRoot object.
4668+
</summary>
4669+
</member>
4670+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.#ctor">
4671+
<summary>
4672+
The default constructor is explicitly defined and marked as
4673+
private to document that all objects must be created fully
4674+
initialized.
4675+
</summary>
4676+
</member>
4677+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.#ctor(WizardWrx.SyncRoot,System.Type,System.String)">
4678+
<summary>
4679+
The one and only public constructor creates a fully initialized
4680+
instance from the three supplied parameters, which corespond to
4681+
its three read-only properties.
4682+
</summary>
4683+
<param name="pobjSyncRoot">
4684+
This WizardWrx.SyncRoot object holds a reference to the SyncRoot
4685+
object that goes into the current instance.
4686+
</param>
4687+
<param name="ptypDeclaringType">
4688+
This System.Type object holds the declaring type information
4689+
that accompanied the request.
4690+
</param>
4691+
<param name="pstrMethodName">
4692+
This System.String represents the name of the method that made
4693+
the request.
4694+
</param>
4695+
</member>
4696+
<member name="F:WizardWrx.AppDomainSyncRootRegistry.s_syncRoot">
4697+
<summary>
4698+
This class keeps its own private synchronization object for use by
4699+
its methods, so that access to them is serialized.
4700+
</summary>
4701+
</member>
4702+
<member name="F:WizardWrx.AppDomainSyncRootRegistry.s_syncRoots">
4703+
<summary>
4704+
Internal store of synchronization objects, keyed by name.
4705+
</summary>
4706+
</member>
4707+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.GetSyncRoot(System.String)">
4708+
<summary>
4709+
Retrieve the <see cref="T:WizardWrx.SyncRoot"/> associated with the specified
4710+
raw key. This overload does not associate explicit type/method
4711+
metadata with the key; it is the caller's responsibility to ensure
4712+
that the key is collision-free and intention-revealing.
4713+
</summary>
4714+
<param name="pstrRawKey">
4715+
This System.String represents a stable, unique identifier for the
4716+
lock. No metadata validation is performed for this overload.
4717+
</param>
4718+
<returns>
4719+
A reference to the <see cref="T:WizardWrx.SyncRoot"/> associated with the
4720+
specified key.
4721+
</returns>
4722+
<exception cref="T:System.ArgumentException">
4723+
Thrown if <paramref name="pstrRawKey"/> is null, empty, or whitespace.
4724+
</exception>
4725+
</member>
4726+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.GetSyncRoot(System.Type,System.String)">
4727+
<summary>
4728+
Construct a canonical synchronization key from a type and method
4729+
name, then retrieve the associated <see cref="T:WizardWrx.SyncRoot"/>. This
4730+
overload enforces strict metadata consistency for the key.
4731+
</summary>
4732+
<param name="ptypDeclaringType">
4733+
The declaring <see cref="T:System.Type"/> for the method being synchronized.
4734+
</param>
4735+
<param name="pstrMethodName">
4736+
This System.String represents the name of the method whose execution
4737+
must be serialized.
4738+
</param>
4739+
<returns>
4740+
If it succeeds, the return value is a reference to the
4741+
<see cref="T:WizardWrx.SyncRoot"/> associated with the constructed key.
4742+
</returns>
4743+
<exception cref="T:System.ArgumentNullException">
4744+
An ArgumentNullException Exception is thrown if
4745+
<paramref name="ptypDeclaringType"/> is null.
4746+
</exception>
4747+
<exception cref="T:System.ArgumentException">
4748+
An ArgumentException Exception is thrown if
4749+
<paramref name="pstrMethodName"/> is null, empty, or whitespace.
4750+
</exception>
4751+
<exception cref="T:System.InvalidOperationException">
4752+
An InvalidOperationException Exception is thrown if the constructed
4753+
key is already associated with a different type or method name than
4754+
the one supplied.
4755+
</exception>
4756+
</member>
4757+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.GetSyncRoot``1(System.String)">
4758+
<summary>
4759+
Convenience overload that infers the declaring type from the
4760+
generic type parameter and the method name from the caller context.
4761+
</summary>
4762+
<typeparam name="T">
4763+
The declaring type for the method being synchronized.
4764+
</typeparam>
4765+
<param name="pstrCallerMemberName">
4766+
The name of the calling member, supplied automatically by the
4767+
compiler.
4768+
</param>
4769+
<returns>
4770+
A reference to the <see cref="T:WizardWrx.SyncRoot"/> associated with the
4771+
constructed key.
4772+
</returns>
4773+
</member>
4774+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.RegisteredSyncRoots">
4775+
<summary>
4776+
Enumerate all registered synchronization roots and their keys.
4777+
</summary>
4778+
<remarks>
4779+
The returned dictionary is a snapshot view of the current registry
4780+
contents. It is intended for diagnostics, logging, and debugging.
4781+
</remarks>
4782+
</member>
46294783
<member name="T:WizardWrx.DateTimeExtensions">
46304784
<summary>
46314785
This class implements two overloads of DateOfMostRecentWeekdayDay, a
2.5 KB
Binary file not shown.
8 KB
Binary file not shown.

AssemblyUtils/bin/Release/WizardWrx.Core.xml

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4626,6 +4626,160 @@
46264626
Looks up a localized string similar to &quot; InnerException = [null].
46274627
</summary>
46284628
</member>
4629+
<member name="T:WizardWrx.AppDomainSyncRootRegistry">
4630+
<summary>
4631+
Provides a centralized, thread-safe registry of <see cref="T:WizardWrx.SyncRoot"/>
4632+
objects keyed by symbolic names. Each key maps to exactly one
4633+
synchronization object for the lifetime of the application domain.
4634+
</summary>
4635+
<remarks>
4636+
The canonical key format for typed overloads is:
4637+
4638+
{AssemblyQualifiedTypeName}.{MethodName}
4639+
4640+
Use the typed overloads to get strict metadata validation. The raw-key
4641+
overload is provided for advanced scenarios where the caller constructs
4642+
a collision-proof key manually.
4643+
</remarks>
4644+
</member>
4645+
<member name="T:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry">
4646+
<summary>
4647+
Internal entry that associates a <see cref="T:WizardWrx.SyncRoot"/> with the
4648+
metadata used to construct its key.
4649+
</summary>
4650+
</member>
4651+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.LockableObject">
4652+
<summary>
4653+
This read-only WizardWrx.SyncRoot object reference holds a
4654+
reference to the synchronization object itself.
4655+
</summary>
4656+
</member>
4657+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.DeclaringType">
4658+
<summary>
4659+
This read-only System.Type object reference holds a reference to
4660+
the Type information supplied in the request to dispense a
4661+
SyncRoot object against which to hold a lock.
4662+
</summary>
4663+
</member>
4664+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.MethodName">
4665+
<summary>
4666+
This read-only System.String holds a reference to the name of
4667+
the method that made the request for a SyncRoot object.
4668+
</summary>
4669+
</member>
4670+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.#ctor">
4671+
<summary>
4672+
The default constructor is explicitly defined and marked as
4673+
private to document that all objects must be created fully
4674+
initialized.
4675+
</summary>
4676+
</member>
4677+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.SyncRootEntry.#ctor(WizardWrx.SyncRoot,System.Type,System.String)">
4678+
<summary>
4679+
The one and only public constructor creates a fully initialized
4680+
instance from the three supplied parameters, which corespond to
4681+
its three read-only properties.
4682+
</summary>
4683+
<param name="pobjSyncRoot">
4684+
This WizardWrx.SyncRoot object holds a reference to the SyncRoot
4685+
object that goes into the current instance.
4686+
</param>
4687+
<param name="ptypDeclaringType">
4688+
This System.Type object holds the declaring type information
4689+
that accompanied the request.
4690+
</param>
4691+
<param name="pstrMethodName">
4692+
This System.String represents the name of the method that made
4693+
the request.
4694+
</param>
4695+
</member>
4696+
<member name="F:WizardWrx.AppDomainSyncRootRegistry.s_syncRoot">
4697+
<summary>
4698+
This class keeps its own private synchronization object for use by
4699+
its methods, so that access to them is serialized.
4700+
</summary>
4701+
</member>
4702+
<member name="F:WizardWrx.AppDomainSyncRootRegistry.s_syncRoots">
4703+
<summary>
4704+
Internal store of synchronization objects, keyed by name.
4705+
</summary>
4706+
</member>
4707+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.GetSyncRoot(System.String)">
4708+
<summary>
4709+
Retrieve the <see cref="T:WizardWrx.SyncRoot"/> associated with the specified
4710+
raw key. This overload does not associate explicit type/method
4711+
metadata with the key; it is the caller's responsibility to ensure
4712+
that the key is collision-free and intention-revealing.
4713+
</summary>
4714+
<param name="pstrRawKey">
4715+
This System.String represents a stable, unique identifier for the
4716+
lock. No metadata validation is performed for this overload.
4717+
</param>
4718+
<returns>
4719+
A reference to the <see cref="T:WizardWrx.SyncRoot"/> associated with the
4720+
specified key.
4721+
</returns>
4722+
<exception cref="T:System.ArgumentException">
4723+
Thrown if <paramref name="pstrRawKey"/> is null, empty, or whitespace.
4724+
</exception>
4725+
</member>
4726+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.GetSyncRoot(System.Type,System.String)">
4727+
<summary>
4728+
Construct a canonical synchronization key from a type and method
4729+
name, then retrieve the associated <see cref="T:WizardWrx.SyncRoot"/>. This
4730+
overload enforces strict metadata consistency for the key.
4731+
</summary>
4732+
<param name="ptypDeclaringType">
4733+
The declaring <see cref="T:System.Type"/> for the method being synchronized.
4734+
</param>
4735+
<param name="pstrMethodName">
4736+
This System.String represents the name of the method whose execution
4737+
must be serialized.
4738+
</param>
4739+
<returns>
4740+
If it succeeds, the return value is a reference to the
4741+
<see cref="T:WizardWrx.SyncRoot"/> associated with the constructed key.
4742+
</returns>
4743+
<exception cref="T:System.ArgumentNullException">
4744+
An ArgumentNullException Exception is thrown if
4745+
<paramref name="ptypDeclaringType"/> is null.
4746+
</exception>
4747+
<exception cref="T:System.ArgumentException">
4748+
An ArgumentException Exception is thrown if
4749+
<paramref name="pstrMethodName"/> is null, empty, or whitespace.
4750+
</exception>
4751+
<exception cref="T:System.InvalidOperationException">
4752+
An InvalidOperationException Exception is thrown if the constructed
4753+
key is already associated with a different type or method name than
4754+
the one supplied.
4755+
</exception>
4756+
</member>
4757+
<member name="M:WizardWrx.AppDomainSyncRootRegistry.GetSyncRoot``1(System.String)">
4758+
<summary>
4759+
Convenience overload that infers the declaring type from the
4760+
generic type parameter and the method name from the caller context.
4761+
</summary>
4762+
<typeparam name="T">
4763+
The declaring type for the method being synchronized.
4764+
</typeparam>
4765+
<param name="pstrCallerMemberName">
4766+
The name of the calling member, supplied automatically by the
4767+
compiler.
4768+
</param>
4769+
<returns>
4770+
A reference to the <see cref="T:WizardWrx.SyncRoot"/> associated with the
4771+
constructed key.
4772+
</returns>
4773+
</member>
4774+
<member name="P:WizardWrx.AppDomainSyncRootRegistry.RegisteredSyncRoots">
4775+
<summary>
4776+
Enumerate all registered synchronization roots and their keys.
4777+
</summary>
4778+
<remarks>
4779+
The returned dictionary is a snapshot view of the current registry
4780+
contents. It is intended for diagnostics, logging, and debugging.
4781+
</remarks>
4782+
</member>
46294783
<member name="T:WizardWrx.DateTimeExtensions">
46304784
<summary>
46314785
This class implements two overloads of DateOfMostRecentWeekdayDay, a
Binary file not shown.
Binary file not shown.

ChangeLog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# WizardWrx .NET API Change Log
22

3+
## 2026-02-03
4+
5+
### WizardWrx.Core 9.0.384
6+
7+
A new `AppDomainSyncRootRegistry` exposes three overloaded methods, all called `GetSyncRoot`, that dispense labeled `WizardWrx.SyncRoot` instances tied to the name of the requesting method and the declaring type of its class.
8+
39
## 2026-02-02
410

511
### WizardWrx.HTTP [9.0.42]

0 commit comments

Comments
 (0)