Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过反射自动生成WCF服务。_C#_.net_Wcf_Reflection_Attributes - Fatal编程技术网

C# 通过反射自动生成WCF服务。

C# 通过反射自动生成WCF服务。,c#,.net,wcf,reflection,attributes,C#,.net,Wcf,Reflection,Attributes,我们目前正在编写一个后端系统,并计划通过WCF提供一层方法。是否有任何工具或开源库可以通过读取属性的反射(例如[WCFEnabled])使方法通过特定的WCF通道可用 例如,想象一个WCF服务,ItemService。在Item类中,将有一个名为“AddItem”的方法。添加[WCFEnabled]后,该方法将通过ItemService在编译时可用。Erm[运营合同] 但是,不确定这些方法是否适用于类方法,通常它们被放在接口方法上,并且您的类实现了接口。我们已经通过使用T4模板来构建服务接口、实

我们目前正在编写一个后端系统,并计划通过WCF提供一层方法。是否有任何工具或开源库可以通过读取属性的反射(例如[WCFEnabled])使方法通过特定的WCF通道可用


例如,想象一个WCF服务,ItemService。在Item类中,将有一个名为“AddItem”的方法。添加[WCFEnabled]后,该方法将通过ItemService在编译时可用。

Erm<代码>[运营合同]


但是,不确定这些方法是否适用于类方法,通常它们被放在接口方法上,并且您的类实现了接口。

我们已经通过使用T4模板来构建服务接口、实现和客户端代理做了类似的事情


T4模板解析服务项目并提取所有用自定义属性修饰的方法。然后,它为发现的每个服务构建带有实现类/接口的svc文件。它还创建客户端代理

OperationContract属性同样适用于类方法。这是您通常编写WCF的方式。您可以编写一个接口,并在签名的顶部指定可供外部世界使用的方法。然而,我希望的是,在类库中设计实体时,您可以定义希望通过WCF访问的方法。然后,一个单独的项目将动态地遍历实体,查看哪些实体将被公开,并自动创建一个WCF端点。因此,您不必编写任何WCF代码,只需分配要在通道中公开的方法即可。感谢Wouter de Kort,从我所读到的内容来看,这似乎是前进的方向。您是否遵循了与我们的场景类似的示例?我在看@StephenBorg,我没有遵循任何粒子的例子。我首先手工编写代理代码(没有添加服务引用添加的所有bagege),然后为服务接口、svc文件和服务实现创建T4模板。整个代理只是一个调用实际服务代码的WCF包装器,因此易于实现。