📄 dotnettypedeelementparser.cs
字号:
using System;
using System.Xml;
using System.Reflection;
using System.Diagnostics;
using System.ComponentModel;
using System.Collections;
namespace gowk.GXF
{
/// <summary>
/// XmlElementParser 的摘要说明。
/// </summary>
internal class DotNetTypedEelementParser:XmlElementParserBase
{
public DotNetTypedEelementParser():base()
{
}
public override bool CanParse(XmlNode context, ParserState state)
{
if(context.NodeType==XmlNodeType.Element)
{
string name=context.Name;
if(ObjectCreator.Instance.TypeShortcuts.ContainsKey(name) || (Type.GetType(name)!=null))return true;
}
return false;
}
public override object Parse(XmlNode context, ParserState state)
{
ObjectCreator creator=ObjectCreator.Instance;
object o=CreateObjectFromShortcut(context.Name);
if(o==null)return null;
foreach(XmlAttribute xa in context.Attributes)
{
ParserState s=new ParserState();
s.Parent=o;
s.Instance=state.Instance;
s.MemberInitializer=state.MemberInitializer;
creator.XmlElementParsers.Parse(xa,s);
}
foreach(XmlNode nd in context.ChildNodes)
{
ParserState s=new ParserState();
s.Parent=o;
s.Instance=state.Instance;
s.MemberInitializer=state.MemberInitializer;
creator.XmlElementParsers.Parse(nd,s);
}
return o;
}
protected internal object CreateObjectFromShortcut(string shortcut)
{
ObjectCreator creator=ObjectCreator.Instance;
Type type=creator.TypeShortcuts.GetType(shortcut);
if(type==null)return null;
try
{
return Activator.CreateInstance(type);
}
catch
{
return null;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -