aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/IMLReader.cs
diff options
context:
space:
mode:
authorjpbruyere <jp.bruyere@hotmail.com>2016-08-22 13:41:50 +0200
committerjpbruyere <jp.bruyere@hotmail.com>2016-09-01 13:24:17 +0200
commita4555b5e71ff4fc8ed89396d02218694230d1292 (patch)
tree41f390a191a02db2748d9ec1aca5489e93115535 /src/IMLReader.cs
parent8b3cd65ebab46402ebc0662de3c9ead220f6322c (diff)
search extension methods for expand delegate
move recurent MemberInfo to global static. modifié : src/CompilerServices/CompilerServices.cs modifié : src/IMLReader.cs modifié : src/ItemTemplate.cs
Diffstat (limited to 'src/IMLReader.cs')
-rw-r--r--src/IMLReader.cs22
1 files changed, 16 insertions, 6 deletions
diff --git a/src/IMLReader.cs b/src/IMLReader.cs
index dc7736f5..bf6cbc49 100644
--- a/src/IMLReader.cs
+++ b/src/IMLReader.cs
@@ -132,13 +132,23 @@ namespace Crow
path = reader.Value;
}
reader.MoveToElement ();
- using (IMLReader iTmp = new IMLReader (null, reader.ReadInnerXml ())) {
- string uid = Guid.NewGuid ().ToString ();
- Interface.Instantiators [uid] =
- new ItemTemplate (iTmp.RootType, iTmp.GetLoader (), dataType, datas);
-
- itemTemplateIds.Add (new string[] { dataType, uid, datas });
+
+ string itemTmpID;
+
+ if (string.IsNullOrEmpty (path)) {
+ using (IMLReader iTmp = new IMLReader (null, reader.ReadInnerXml ())) {
+ itemTmpID = Guid.NewGuid ().ToString ();
+ Interface.Instantiators [itemTmpID] =
+ new ItemTemplate (iTmp.RootType, iTmp.GetLoader (), dataType, datas);
+ }
+ }else{
+ if (!reader.IsEmptyElement)
+ throw new Exception ("ItemTemplate with Path attribute may not include sub nodes");
+ itemTmpID = path;
+ Interface.Instantiators [itemTmpID] =
+ new ItemTemplate (itemTmpID, dataType, datas);
}
+ itemTemplateIds.Add (new string[] { dataType, itemTmpID, datas });
}
}