1

tl;dr

この質問に対して、答えは であるはずABです。理解できますが、で使用されているようなスタンドアロン メソッドAに関する情報が見つかりません。CreateChannnelB

なぜ答えBが正しいと見なされるのか、それとも正しくないと考えられるのか、誰でも説明できますか?


バックグラウンド

私はWCFいくつかの模擬試験を使用して学習しようとしています。私はすでに、与えられた答えが正しいかどうか確信が持てないいくつかの質問に遭遇しました。

次の質問は、明らかなスペルミス(intetface INameService)に加えて、私の疑問に深刻な影響を与えています。

質問は次のようになります

質問21

Windows Communication Foundation (WCF) ソリューションは、次のコントラクトを使用します。(行番号は参照用にのみ含まれています。)

01 [ServiceContract(CallbackContract=typeof(INameService))]   
02 public interface IGreetingService   
03 {   
04  [OperationContract]   
05  string GetMessage();  
06 }  
07  
08 [ServiceContract]
09 public intetface INameService 
10 { 
11  [OperationContract] 
12  string GetName(); 
13 }

クライアントがサービス インターフェイスで GetMessage を呼び出すと、サービスはクライアント コールバックで GetName を呼び出します。クライアントでは、クラス NameService がコールバック コントラクトを実装します。クライアント チャネルは次のように作成されます。

22 InstanceContext callbackContext = new Instance Context(new NameService("client"));  
23  
24  
25 DuplexChannelFactory <IGreetingService> factory = 
    new DuplexChannelFactory<IGreetingServices>(typeof(NameService),binding,address);  
26 IGreetingService greetingService = factory.CreateChannel();  

サービス コールバックが NameService のインスタンスによって処理されるようにする必要があります。この目標を達成するための 2 つの方法は何ですか? (各正解は完全な解決策を提示します。2 つ選択してください。)

そして、私は次の答えから選ぶことができます

A. 25 行目を次のコード セグメントに変更します。
DuplexChannelFactory factory = new DuplexChannelFactory(callbackContext, binding, address);

B. 26 行目を次のコード セグメントに変更します。IGreetingService greetingServicefactory = CreateChannel(callbackContext);

C. 26 行目の後に次のコード セグメントを追加します。
callbackContextIncomingChannelsAdd((IDuplexChannel)greetingService)

D. 26 行目の後に次のコード セグメントを追加します。
callbackContext.OutgoingChannels.Add((IDuplexChannel)greetingService)

この質問に対して、答えは であるはずABです。理解できますが、で使用されているようなスタンドアロン メソッドAに関する情報が見つかりません。CreateChannnelB

なぜ答えBが正しいと見なされるのか、それとも正しくないと考えられるのか、誰でも説明できますか?

4

1 に答える 1

4

答えBは誤植です。それは読むべきです:

IGreetingService greetingService = factory.CreateChannel(callbackContext); 
于 2012-07-19T17:42:40.833 に答える