为什么System.ServiceModel.Dispatcher需要完全限定才能编译

时间:2012-06-27 21:17:29

标签: c# wcf .net-4.0 namespaces

我正在学习WCF并在一个简单的WCF示例中找到了this article

在下面的代码中(来自上面的文章),为什么在System.ServiceModel.Dispatcher.ChannelDispatcher时,foreach循环中的using System.ServiceModel;需要完全限定?虽然ServiceHost不需要完全限定其工作,但它来自与Dispatcher相同的命名空间。

如果从循环中的System.ServiceModel中删除System.ServiceModel.Dispatcher.ChannelDispatcher,则代码无法编译。

using System;
using System.ServiceModel;

namespace ConsoleHost
{
    class Program
    {
        static void Main(string[] args)
        {
            Type serviceType = typeof(EmailService.EmailValidator);
            Uri serviceUri = new Uri("http://localhost:8080/");

            ServiceHost host = new ServiceHost(serviceType, serviceUri);
            host.Open();

            foreach (System.ServiceModel.Dispatcher.ChannelDispatcher dispatcher in host.ChannelDispatchers)
            {
                Console.WriteLine("\t{0}, {1}", dispatcher.Listener.Uri.ToString(), dispatcher.BindingName); 
            }
        }
    }
}

1 个答案:

答案 0 :(得分:4)

ServiceHost是System.ServiceModel命名空间的一个类(在using语句中有); ChannelDispatcher是System.ServiceModel。 Dispatcher 命名空间上的一个类。如果你使用下面的语句添加它,你将能够使用ChannelDispatcher而不是完全限定。

using System.ServiceModel.Dispatcher;