我正在学习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);
}
}
}
}
答案 0 :(得分:4)
ServiceHost
是System.ServiceModel命名空间的一个类(在using语句中有); ChannelDispatcher
是System.ServiceModel。 Dispatcher 命名空间上的一个类。如果你使用下面的语句添加它,你将能够使用ChannelDispatcher而不是完全限定。
using System.ServiceModel.Dispatcher;