使用 returns 委托给授权调用者的方法。如何?
Use a method that returns a delegate to authorized callers. How?
我正在学习 C#。一本书(Exam Ref 70-483)中有一个问题对我来说意义不大,因为我在任何地方都找不到它的例子。我的理解是消除错误答案,正确答案必须存在。
- 您的 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' 没有上下文就没有意义。但是,我们可以通过排除法来接近它。
- 制作方法public
这个让大家这么叫,所以不对
- 使用事件,以便在执行方法时通知外部用户。
这与调用方法无关,只是一个答案的分心。错了
- 使用一种方法 returns 委托给授权调用者。
如果我们假设'authorized callers'意味着'certain callers',那么这是一种可能性。
- 将私有方法声明为 lambda。
这是您为限制对该方法的访问所做的部分,但实际上不做任何事情。所以,它不能解决问题。
所以#3(或 C)是正确的。这个问题真的一个糟糕的问题,而且没有真正明确的答案。 'answer' 本质上和问题是一样的,没有进一步的细节。
对于你关于 'authorized caller' 的问题,它没有具体说明(这也是我在这个问题上遇到的问题)。除了逐字逐句地回答(不是技术意义上的),您无法研究任何其他内容。正如我所说,答案与问题基本相同,这并不是真正的答案。我将其等同于 "What is 1 + 1 ? Answer: 1 + 1"
我正在学习 C#。一本书(Exam Ref 70-483)中有一个问题对我来说意义不大,因为我在任何地方都找不到它的例子。我的理解是消除错误答案,正确答案必须存在。
- 您的 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' 没有上下文就没有意义。但是,我们可以通过排除法来接近它。
- 制作方法public
这个让大家这么叫,所以不对
- 使用事件,以便在执行方法时通知外部用户。
这与调用方法无关,只是一个答案的分心。错了
- 使用一种方法 returns 委托给授权调用者。
如果我们假设'authorized callers'意味着'certain callers',那么这是一种可能性。
- 将私有方法声明为 lambda。
这是您为限制对该方法的访问所做的部分,但实际上不做任何事情。所以,它不能解决问题。
所以#3(或 C)是正确的。这个问题真的一个糟糕的问题,而且没有真正明确的答案。 'answer' 本质上和问题是一样的,没有进一步的细节。
对于你关于 'authorized caller' 的问题,它没有具体说明(这也是我在这个问题上遇到的问题)。除了逐字逐句地回答(不是技术意义上的),您无法研究任何其他内容。正如我所说,答案与问题基本相同,这并不是真正的答案。我将其等同于 "What is 1 + 1 ? Answer: 1 + 1"