使用 returns 委托给授权调用者的方法。如何?

Use a method that returns a delegate to authorized callers. How?

我正在学习 C#。一本书(Exam Ref 70-483)中有一个问题对我来说意义不大,因为我在任何地方都找不到它的例子。我的理解是消除错误答案,正确答案必须存在。

  1. 您的 class 中有一个私有方法,并且您希望某些调用者可以调用该方法。你是做什么的?

一个。使方法 public.

乙。使用事件,以便在执行方法时通知外部用户。

C。使用 returns 委托给授权调用者的方法。

D.将私有方法声明为 lambda。

正确答案'C':"The method can see whether the caller is authorized and then return a delegate to the private method that can be invoked at will."

这有什么例子?授权来电者是什么意思?书中没有提到授权的调用者。关于委托和方法授权,我唯一能找到的是关于 WCF 和授权,但这肯定超出了这里的范围。出色地。我希望有人能对此有所了解!像这样的棘手问题太多了......即使不是棘手的问题,也很难理解答案。

下面是如何实施答案 C 的示例。

class Conspirator
{
    private void SecretMethod()
    {
        Console.WriteLine("Secret exposed!");
    }

    public Action GetSecretMethod(long authorizationKey)
    {
        if (authorizationKey == 63278823982)
        {
            return this.SecretMethod;
        }

        return null;
    }
}

如您所见,SecretMethod 是私有的。 GetSecretMethod returns 包含对私有方法的引用的 delegate,但前提是传递的 authorizationKey 是正确的。当然,这是 "authorization" 的一种非常基本的形式,在现实生活中你会有一些其他的授权机制。

您可以按以下方式使用此 class:

void Main()
{
    var conspirator = new Conspirator();

    var secretPrinter = conspirator.GetSecretMethod(63278823982);
    secretPrinter();
    // Prints "Secret exposed!"
}

答案确实含糊不清,'correct'答案在架构方面没有意义。 'Authorized caller' 没有上下文就没有意义。但是,我们可以通过排除法来接近它。

  1. 制作方法public

这个让大家这么叫,所以不对

  1. 使用事件,以便在执行方法时通知外部用户。

这与调用方法无关,只是一个答案的分心。错了

  1. 使用一种方法 returns 委托给授权调用者。

如果我们假设'authorized callers'意味着'certain callers',那么这是一种可能性。

  1. 将私有方法声明为 lambda。

这是您为限制对该方法的访问所做的部分,但实际上不做任何事情。所以,它不能解决问题。

所以#3(或 C)是正确的。这个问题真的一个糟糕的问题,而且没有真正明确的答案。 'answer' 本质上和问题是一样的,没有进一步的细节。

对于你关于 'authorized caller' 的问题,它没有具体说明(这也是我在这个问题上遇到的问题)。除了逐字逐句地回答(不是技术意义上的),您无法研究任何其他内容。正如我所说,答案与问题基本相同,这并不是真正的答案。我将其等同于 "What is 1 + 1 ? Answer: 1 + 1"