mirror of
https://github.com/OPCFoundation/UA-.NETStandard.git
synced 2026-10-28 22:55:49 +08:00
### Summary This PR fixes `AliasNameClient.EnumerateSubCategoriesAsync()` so it follows OPC UA `Browse` continuation points until the server has returned every `SubAliasNameCategories` reference, and adds a regression test covering the paged browse case that was previously truncated after the first page. ### Problem `EnumerateSubCategoriesAsync()` is intended to expose the full set of sub-categories organized beneath an `AliasNameCategoryType` node. However, the previous implementation only issued a single `BrowseAsync()` call and immediately enumerated `BrowseResult.References` from that first response. Under OPC UA, servers are allowed to split browse results across multiple pages and return a `ContinuationPoint` when the first response does not contain the full reference set. In that situation, the client must continue with `BrowseNext` until the continuation point is exhausted. Because this helper never consumed the returned continuation point, it silently dropped every sub-category that appeared after the first page. ### Changes - Continue sub-category enumeration with `BrowseNextAsync()` whenever the initial `BrowseAsync()` response contains a non-empty continuation point. - Keep the existing filtering behavior so the helper still returns only `AliasNameCategoryType` references that can be resolved to local `NodeId` values. - Add scriptable `Browse` / `BrowseNext` support to the alias-name session test harness so paged browse behavior can be covered with a focused unit test. - Add a regression test that verifies `EnumerateSubCategoriesAsync()` returns sub-categories from both the initial browse response and the follow-up `BrowseNext` response.