[MoCoolKaErpGen代码讲解] WCF knownType 在web.config中生成

3 篇文章 0 订阅
MoCoolKaErp只有一个入口,接收参数为基类,按WCF协议必须声明所有的子类为knownType.最直接的办法就是遍历所有assembly,寻找所有的子类。
用linq遍历assembly寻找指定类生成web.config中序列化
linq语法的确精炼,一句话就行了
方法
public XElement GenConfig(String[] assemblys)
{

return new XElement("system.runtime.serialization", new XElement("dataContractSerializer",
new XElement("declaredTypes",
new XElement("add", new XAttribute("type", typeof(MKEntity).AssemblyQualifiedName),
(from ass in assemblys
let assembly = Assembly.Load(ass)
select from type in assembly.GetTypes()
where (type.IsClass && type.IsSubclassOf(typeof(MKEntity)))
select (new XElement("knownType", new XAttribute("type", type.AssemblyQualifiedName))))
))))
;
}
调用
[TestMethod()]
public void GenConfigTest()
{
MKGenConfig target = new MKGenConfig(); // TODO: Initialize to an appropriate value
string[] assemblys = new String[] { "MoCoolKaCoreErp", "MoCoolKaErp" };// TODO: Initialize to an appropriate value
XElement expected = null; // TODO: Initialize to an appropriate value
XElement actual;
actual = target.GenConfig(assemblys);
//Assert.AreEqual(expected, actual);
//Assert.Inconclusive("Verify the correctness of this test method.");
}

生成结果
<system.runtime.serialization>
<dataContractSerializer>
<declaredTypes>
<add type="MoCoolKaErp.Model.MKEntity, MoCoolKaErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<knownType type="MoCoolKaCoreErp.Model.Access.MKPurviewEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.UI.MKColumnEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.DataModel.MKFieldEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.DataModel.MKTableEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.UI.MKTabEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.UI.MKWindowEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.Code.MKCodeClassEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.Code.MKCodeEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.Access.MKConfigEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.Access.MKRoleEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<knownType type="MoCoolKaCoreErp.Model.Access.MKUserEO, MoCoolKaCoreErp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</add>
</declaredTypes>
</dataContractSerializer>
</system.runtime.serialization>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值