使用将委托返回给授权调用方的方法.如何去做

本文关键字:调用 方法 何去做 授权 返回 | 更新日期: 2023-09-27 18:19:06

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

  1. 你在你的类中有一个私有方法,你想让某些调用者调用这个方法成为可能。你是怎么做的?

。将方法设为public

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

C。使用将委托返回给授权调用方的方法。

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

正确答案"C":"方法可以查看调用者是否被授权,然后返回一个委托给可以随意调用的私有方法。"

这方面的例子是什么?他们所说的授权来电者是什么意思?本子里没有提到授权来电者。我能找到的关于委托和方法授权的唯一东西是关于WCF和授权的,但这肯定超出了这里的范围。好。我希望有人能解释一下!有很多这样的难题……好吧,如果不是很难的问题,很难理解的答案。

使用将委托返回给授权调用方的方法.如何去做

下面是如何实现answer 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返回一个委托,其中包含对私有方法的引用,但前提是传递的authorizationKey是正确的。当然,这是一种非常基本的"授权"形式,在现实生活中,您可能会有其他一些授权机制。

你可以这样使用这个类:

void Main()
{
    var conspirator = new Conspirator();
    var secretPrinter = conspirator.GetSecretMethod(63278823982);
    secretPrinter();
    // Prints "Secret exposed!"
}

答案真的很模糊,而"正确"的答案在架构方面没有意义。"授权来电者"没有上下文就没有意义。但是,我们可以用消去法。

  1. 将方法设为public

这让每个人都调用它,所以它是错误的。

  • 使用事件,以便在方法执行时可以通知外部用户。
  • 这与调用方法无关,它只是一个分散注意力的答案。错误的

  • 使用将委托返回给授权调用方的方法。
  • 如果我们假设"授权的呼叫者"是指"某些呼叫者",那么这是可能的。

  • 将私有方法声明为lambda。
  • 这是您为限制对方法的访问所做的部分,但实际上并不做任何事情。所以,这并不能解决问题。

    所以#3(或C)是正确的。这个问题真的是一个不好的问题,并且没有一个真正明确的答案。"答案"本质上与问题是一样的,没有更多的细节。

    对于你关于"授权来电者"的问题,它没有指定(这也是我在这个问题上遇到的问题)。除了逐字逐句地回答(不是技术意义上的),你没有什么可以研究的。就像我说的,答案本质上和问题是一样的,这不是一个真正的答案。我把它等同于"1 + 1等于多少?"答案:1 + 1"