测试WCF主机上的接口失败

时间:2011-08-22 08:41:54

标签: c# wcf interface

我有以下简单的界面:

public interface IInitialisableWcfService
{
    void Initialise();
}

我将其放在一个被用作WCF服务的类中:

public class LocalResourceManager : ILocalResourceManager, IInitialisableWcfService 

ILocalResourceManager是用于设置wcf端点的绑定配置的接口。

在我们用于动态托管WCF服务的另一个类中,我有以下代码来测试IInitialisableWcfService接口:

   private void Create(Type serviceType)
    {
        try
        {
            ServiceHost host = null;
            if (serviceType == typeof(IInitialisableWcfService))
            {
                // create object to initialize.
            }
            else
            {
                // do something else
            }

        catch (ThreadAbortException)
        {
            throw;
        }
        catch (Exception ex)
        {
           //log error
        }
    }

但是当传入LocalResourceManager管理器服务时,或者实际上任何其他实现IInitialisableWcfService的服务都无法匹配它。我也试过这个

  if(serviceType is IInitialisableWcfService)

但这也不起作用。

我不确定这里的问题是什么。三种可能性:

1)检查和接口的语法错误。我发现这不太可能。

2)因为WCF端点是使用ILocalResourceManager接口注册的,所以该对象不会通过WCF公开其IInitialisableWcfService

3)绕过Type而不是实际的类意味着你无法检查接口

或者可能没有上述内容。非常感谢。

干杯, 马特

1 个答案:

答案 0 :(得分:1)

Type serviceType是实现服务的实际具体类型,因此您只需要检查服务类型是否可以分配给您想要的接口:

if (typeof(IInitialisableWcfService).IsAssignableFrom(serviceType))
{
    // Code here
}