OPC/UA-.NETStandard 的递归 GetEndpoints 方法如何工作?

How does the recursive GetEndpoints-Method of the OPC/UA-.NETStandard work?

我想学习一些 C# 和 .net 以及网络知识。因此,我选择了 OPC UA 代码。

在 github 上:UA-.NETStandard/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs

但是我真的不明白这个方法是如何工作的:

    public virtual EndpointDescriptionCollection GetEndpoints(StringCollection profileUris)
    {
        EndpointDescriptionCollection endpoints = null;

        GetEndpoints(
            null,
            this.Endpoint.EndpointUrl,
            null,
            profileUris,
            out endpoints);

        return PatchEndpointUrls(endpoints);
    }

我理解是递归的方法,一遍又一遍的调用自己

  1. 它是怎么结束的?可能是连续轮询?
  2. 内部调用的参数“null,this.Endpoint.EndpointUrl,null,profileUris,out endpoints”是 StringCollection 吗?因为 StringCollection "profileUris" 已经是一个 StringCollection!?

该方法实际上不是递归的。您正在完全调用不同的方法(或“重载”)。你可以看看in the code repo.

请注意 class 是部分的。如果您遵循 repo 中的引用,您会看到它导致生成的客户端和服务器部分 classes.