惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
博客园 - 【当耐特】
V
Visual Studio Blog
GbyAI
GbyAI
V
V2EX
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
A
About on SuperTechFans
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
量子位
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件

博客园 - 牟向阳

Implementing SQL Server Row and Cell Level Security Daily English 你知道你的後照鏡調錯了嗎?原來裡面隱藏著視線死角! Silverlight Freezing & Crash Silverlight 中实现Service同步调用 Silverlight:获取ContentTemplate中的命名控件 silverlight 4常用的多线程技术 推荐几款Silverlight Tools【转载】 Emit Vs CodeDom Custom DataContractSerializerOperationBehavior SQL Service查询分析 WPF&Silverlight精髓 支持定位当前页,自定义排序的分页SQL(拒绝动态SQL) WCF学习经验分享,如何更好地学习WCF? 后台管理界面收集 两个使用的Ajax Demo 自学面向对象 发几个有价值的.net源码 我是如何带领团队开发项目的
一个配置文件的Mapping
牟向阳 · 2011-05-06 · via 博客园 - 牟向阳

1. 需要Mapping的Xml结构

<?xml version="1.0" encoding="utf-8"?>
<Requestes>
<Request name="RequestA" formname="LanguageUI" serviceurl="http://MyComputer/LanguageService" httpmethod="POST" targetui="Settings->LanuageSetting">
<Reference name="ClassA">
<Property name="DateFrom" type="DateTime?" />
<Property name="DateTo" type="DateTime?" />
</Reference>
</Request>
<Request name="RequestB" formname="ImageShowUI" serviceurl="http://MyComputer/ImageService" httpmethod="POST" targetui="Settings->Images">
<Reference name="ClassB">
<Property name="Top" type="int" />
</Reference>
</Request>
</Requestes>

2. Mapping到的类结构

public class PropertyInfo
{
public string PropertyName
{
get;
set;
}
public string PropertyType
{
get;
set;
}
}
public class DynamicEntity
{
public string Name
{
get;
set;
}
public string ServiceURL
{
get;
set;
}
public string TargetUI
{
get;
set;
}
public List<PropertyInfo> SimplePropertyList { get; set; }
public Dictionary<string, List<PropertyInfo>> CollectivePropertyList { get; set; }
public List<RefenceInfo> RefenceList
{
get;
set;
}
public string HttpMehtod
{
get;
set;
}
public string FormName
{
get;
set;
}
}
public class RefenceInfo
{
public string Key
{
get;
set;
}
public List<PropertyInfo> SimplePropertyList { get; set; }
public Dictionary<string, List<PropertyInfo>> CollectivePropertyList { get; set; }
public List<RefenceInfo> RefenceList { get; set; }
}

 3. Mapping的方法

public static List<DynamicEntity> Generate(string xmlPath, string formName)
{
XElement main
= XElement.Load(xmlPath);return
(from c
in main.Elements("Request")
where c.Attribute("formname").Value == formName
select
new DynamicEntity
{
Name
= c.Attribute("name").Value,
ServiceURL
= c.Attribute("serviceurl").Value,
TargetUI
= c.Attribute("targetui").Value,
HttpMehtod
= c.Attribute("httpmethod").Value,
FormName
= c.Attribute("formname").Value,
SimplePropertyList
= c.Elements("Property").Where(p => p.Attribute("type").Value.Trim().ToLower() != "list").Select(p => new PropertyInfo { PropertyName = p.Attribute("name").Value, PropertyType = p.Attribute("type").Value }).ToList(),
CollectivePropertyList
= CollectivePropertyList(c.Elements("Property").Where(p => p.Attribute("type").Value.Trim().ToLower() == "list")),
RefenceList
= TopRefenceList(c.Elements("Reference"))
}).ToList
<DynamicEntity>();
}