c#中的代理/模拟对象用于wcf

时间:2011-02-24 09:26:16

标签: c# wcf proxy mocking

我正在尝试创建一个在调用GetGreeting()时使用模拟对象或代理对象的通用方法。我如何构建代码以使其更通用,即不仅仅用于GreetingService?我必须以某种方式传递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 个答案:

答案 0 :(得分:1)

看一下ChannelFactory

如果你想要一个专门用于wcf的代理,那就应该诀窍

进行测试时,您可以使用其中一个模拟框架,例如molesnmockmoq