在 WCF Svc 标记文件中,我想使用泛型类型作为工厂:
<%@ ServiceHost Language="C#" Debug="true" Factory="MY_GENERIC_TYPE_GOES_HERE" Service="WebSrv.MyService" CodeBehind="MyService.svc.cs" %>
我的泛型类的定义是这样的:
namespace Tools.Services
{
public class ServiceHostFactory<TService> : System.ServiceModel.Activation.ServiceHostFactoryBase
{
//...
}
}
如何使用给定的类型作为模板类型引用此类型,我的意思是这样的:
Tools.Services.ServiceHostFactory<WebSrv.MyService>
通过查看MSDN Type.GetType文档,我尝试了以下操作,但没有成功:
<%@ ServiceHost Language="C#" Debug="true" Service="WebSrv.MyService" Factory="Tools.Services.ServiceHostFactory`1[WebSrv.MyService]" CodeBehind="MyService.svc.cs" %>
输出:
“/”应用程序中的服务器错误。解析器错误描述:解析服务此请求所需的资源时发生错误。请查看以下特定的解析错误详细信息并适当地修改您的源文件。
解析器错误消息:在服务编译期间无法加载 CLR 类型“Tools.Services.ServiceHostFactory`1[WebSrv.MyService]”。验证此类型是否定义在位于应用程序的 \App_Code 目录中的源文件中、包含在位于应用程序的 \bin 目录中的已编译程序集中,或者存在于安装在全局程序集缓存中的程序集中。请注意,类型名称区分大小写,\App_Code 和\bin 等目录必须位于应用程序的根目录中,不能嵌套在子目录中。
输出:
“/”应用程序中的服务器错误。无法加载文件或程序集“Tools.Services”或其依赖项之一。该系统找不到指定的文件。
<%@ ServiceHost Language="C#" Debug="true" Service="WebSrv.MyService" Factory="Tools.Services.ServiceHostFactory`1[WebSrv.MyService,WebSrv ],Tools.Services" CodeBehind="MyService.svc.cs" %>
输出:
“/”应用程序中的服务器错误。无法加载文件或程序集“Tools.Services”或其依赖项之一。该系统找不到指定的文件。
这甚至可以以通用方式实现吗?