嗨,我有一个类库,它执行方法,并且有很多不同的类,它用作方法调用的参数...
我正在为这个类库创建一个 wcf 包装器。但我无权更改类库。
现在我的问题是如何轻松地将这些类公开为数据契约/数据成员..?
我有大约 100 个不同的类,我需要这些方法。
Thanks
如果您确实无法更改库,那么我相信通过 WCF 公开类的唯一选择是为每个方法创建包装器对象。我会考虑为这个任务编写一个代码生成器。
您可以反思要公开的程序集中的类型集,以获取所需的类型元数据信息。
您可以使用类似 t4 模板(VS 2008 及更高版本的一部分)和T4工具箱 http://t4toolbox.codeplex.com/创建代码生成器来为您编写代码。生成器完成后,如果您的库发生变化,应该很容易再次重新运行。更新代码生成器并重新运行它也很容易修复错误。
我提到的另一个选项只是为了完整性,但存在一些棘手的问题,那就是反汇编和修补有问题的代码。您可以使用类似 ildasm 的工具来转储程序集的 il,添加必要的 WCF 属性,然后使用 ilasm 重新组装它。但是,该过程可能容易出错,每当程序集发生更改时,您都必须重做该过程,并且可能会出现法律问题,具体取决于谁拥有程序集的 IP,并且您必须重新签署程序集,如果它需要是强名称程序集,则可能具有不同的加密证书。
* Edit *
请求的包装器代码示例:
public class ToWrap {
public String Name { get; set; }
public String Address { get; set; }
}
[DataContract]
public class Wrapper {
private ToWrap _wrapped;
// constructor for WCF marshalling
public Wrapper() {
_wrapped = new ToWrap();
}
public Wrapper(ToWrap wrapped) {
_wrapped = wrapped;
}
[DataMember]
public String Name {
get { return _wrapped.Name; }
set { _wrapped.Name = value; }
}
[DataMember]
public String Address {
get { return _wrapped.Address; }
set { _wrapped.Address = value; }
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)