diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2016-08-22 13:41:50 +0200 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2016-09-01 13:24:17 +0200 |
| commit | a4555b5e71ff4fc8ed89396d02218694230d1292 (patch) | |
| tree | 41f390a191a02db2748d9ec1aca5489e93115535 /src/IMLReader.cs | |
| parent | 8b3cd65ebab46402ebc0662de3c9ead220f6322c (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.cs | 22 |
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 }); } } |