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 >
< 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 ; }
}
{
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 > ();
}
{
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 > ();
}