2011-02-24 41 views
0

我想創建一個通用的方式使用模擬對象或代理對象時調用GetGreeting()。我如何構造代碼,使它更通用,即不僅僅是GreetingService?我想以某種方式傳入WCF服務類型嗎?在c#中的代理/模擬對象的wcf

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace proxymockproblem 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      GreetingServiceManager caller = new GreetingServiceManager(false); 
      Console.Write(caller.GetCaller().GetGreeting()); 
      Console.ReadLine(); 
     } 
    } 

    public interface IGreetingServiceManager 
    { 
     string GetGreeting(); 
    } 

    public class proxyGreetingService : IGreetingServiceManager 
    { 
     public string GetGreeting() 
     { return "hi from proxyGreetingService"; } 
    } 

    public class mockGreetingService : IGreetingServiceManager 
    { 
     public string GetGreeting() 
     { return "hi from mock"; } 
    } 


    public class GreetingServiceManager 
    { 
     bool UseMock; 
     public GreetingServiceManager(bool usemock) 
     { 
      UseMock = usemock; 
     } 

     public IGreetingServiceManager GetCaller() 
     { 
      if (UseMock) 
      { 
       return new proxyGreetingService(); 
      } 
      else 
      { 
       return new mockGreetingService(); 
      } 

     } 
    } 

} 

回答

1

去看一下一個在ChannelFactory

如果你想爲WCF代理具體而言,是應該做的伎倆

做測試,你可以用嘲諷的框架之一outthere如molesnmockmoq

+0

我不是在尋找一個模擬框架,只是爲了以更通用的方式構建我的代碼。我附上的代碼專門用於1方法,即GreetingService。我想創建一個類,它在實例化時會調用模擬類或代理類。也許通過使用委託或匿名類型? – 2011-02-24 10:53:01

+0

沒錯,但是使用ChannelFactory 你可以在運行時進行wcf實現,所以你可以將你的GreetingServiceManager變成ServiceManager ,然後使用帶ChannelFactory的T來連接到wcf,並且嘲笑模擬比特的選擇框架 – aL3891 2011-02-28 12:26:03