使用将委托返回给授权呼叫者的方法。怎么样?

时间:2015-10-23 12:02:49

标签: c# delegates authorization method-invocation

我正在学习C#。书中有一个问题(考试参考文献70-483),对我来说很少见,因为我无法在任何地方找到任何例子。我理解它是为了消除错误的答案,正确的答案必须在那里。

  1. 您的类中有一个私有方法,并且您希望某些调用方可以调用该方法。你做什么的?
  2. 一个。将方法公之于众。

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

    ℃。使用将委托返回给授权呼叫者的方法。

    d。将private方法声明为lambda。

    正确答案'C':“该方法可以查看调用者是否已获得授权,然后将委托返回给可以随意调用的私有方法。”

    这是一个什么样的例子?授权来电者的意思是什么?书中没有提到授权的来电者。关于委托和方法授权我唯一能找到的就是WCF和授权,但这肯定超出了范围。好。我希望有人可以对此有所了解!有这么多棘手的问题......如果不是难以解决的问题,那么难以理解答案。

2 个答案:

答案 0 :(得分:4)

以下是如何实施答案 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 :(得分:1)

答案真的模糊,而“正确”的答案在架构方面没有意义。没有上下文,“授权调用者”并没有真正意义。但是,我们可以通过消除过程来接近它。

  1. 使方法公开
  2. 这让每个人都可以打电话,所以这是错误的。

    1. 使用事件,以便在执行方法时通知外部用户。
    2. 这与调用方法无关,只是分散了答案。错了

      1. 使用将委托返回给授权呼叫者的方法。
      2. 如果我们假设'授权呼叫者'意味着'某些呼叫者',那么这是可能的。

        1. 将私有方法声明为lambda。
        2. 这是限制访问该方法的部分,但实际上并非执行。所以,它没有解决问题。

          所以#3(或C)是正确的。这个问题 真的 是一个糟糕的问题,并没有真正明确的答案。 “答案”与问题基本相同,没有进一步的细节。

          关于“授权来电者”的问题,未指定(这也是我对这个问题的问题)。除了逐字逐句地回答(不是技术意义上的)之外,你没有什么可以研究的。正如我所说,答案基本上与问题相同,这不是一个真正的答案。我把它等同于“什么是1 + 1?答案:1 + 1”