我有以下简单的界面:
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而不是实际的类意味着你无法检查接口
或者可能没有上述内容。非常感谢。
干杯, 马特
答案 0 :(得分:1)
Type
serviceType
是实现服务的实际具体类型,因此您只需要检查服务类型是否可以分配给您想要的接口:
if (typeof(IInitialisableWcfService).IsAssignableFrom(serviceType))
{
// Code here
}