我正在学习C#。书中有一个问题(考试参考文献70-483),对我来说很少见,因为我无法在任何地方找到任何例子。我理解它是为了消除错误的答案,正确的答案必须在那里。
一个。将方法公之于众。
B中。使用事件,以便在执行方法时通知外部用户。
℃。使用将委托返回给授权呼叫者的方法。
d。将private方法声明为lambda。
正确答案'C':“该方法可以查看调用者是否已获得授权,然后将委托返回给可以随意调用的私有方法。”
这是一个什么样的例子?授权来电者的意思是什么?书中没有提到授权的来电者。关于委托和方法授权我唯一能找到的就是WCF和授权,但这肯定超出了范围。好。我希望有人可以对此有所了解!有这么多棘手的问题......如果不是难以解决的问题,那么难以理解答案。
答案 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)
答案真的模糊,而“正确”的答案在架构方面没有意义。没有上下文,“授权调用者”并没有真正意义。但是,我们可以通过消除过程来接近它。
这让每个人都可以打电话,所以这是错误的。
这与调用方法无关,只是分散了答案。错了
如果我们假设'授权呼叫者'意味着'某些呼叫者',那么这是可能的。
这是限制访问该方法的部分,但实际上并非执行。所以,它没有解决问题。
所以#3(或C)是正确的。这个问题 真的 是一个糟糕的问题,并没有真正明确的答案。 “答案”与问题基本相同,没有进一步的细节。
关于“授权来电者”的问题,未指定(这也是我对这个问题的问题)。除了逐字逐句地回答(不是技术意义上的)之外,你没有什么可以研究的。正如我所说,答案基本上与问题相同,这不是一个真正的答案。我把它等同于“什么是1 + 1?答案:1 + 1”