📄 memberinvokercollection.cs
字号:
using System;
using System.Xml;
using System.Reflection;
using System.Diagnostics;
using System.ComponentModel;
using System.Collections;
namespace gowk.GXF
{
/// <summary>
/// MemberInvokerCollection 的摘要说明。
/// </summary>
internal class MemberInvokerCollection:System.Collections.ArrayList
{
public MemberInvokerCollection()
{
}
public new MemberInvoker this[int index]
{
get{return (MemberInvoker)this[index];}
}
public override void Sort()
{
MemberInvokerComparer mic=new MemberInvokerComparer();
base.Sort (mic);
}
public object GetValue(object obj,string men,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.GetValue(obj,men,state);
}
catch(System.NotSupportedException nex)
{
System.Diagnostics.Trace.WriteLine("NotSupportedException:"+nex.Message);
System.Diagnostics.Trace.WriteLine(obj.ToString()+men);
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return null;
}
public object GetValue(object obj,MemberInfo men,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.GetValue(obj,men,state);
}
catch(System.NotSupportedException nex)
{
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return null;
}
public object GetValue(object obj,FieldInfo men,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.GetValue(obj,men,state);
}
catch(System.NotSupportedException nex)
{
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return null;
}
public object GetValue(object obj,PropertyInfo men,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.GetValue(obj,men,state);
}
catch(System.NotSupportedException nex)
{
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return null;
}
public bool SetValue(object obj,string men,object value,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.SetValue(obj,men,value,state);
}
catch(System.NotSupportedException nex)
{
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return false;
}
public bool SetValue(object obj,MemberInfo men,object value,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.SetValue(obj,men,value,state);
}
catch(System.NotSupportedException nex)
{
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return false;
}
public bool SetValue(object obj,FieldInfo men,object value,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.SetValue(obj,men,value,state);
}
catch(System.NotSupportedException nex)
{
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return false;
}
public bool SetValue(object obj,PropertyInfo men,object value,ParserState state)
{
foreach(MemberInvoker mi in this)
{
try
{
return mi.SetValue(obj,men,value,state);
}
catch(System.NotSupportedException nex)
{
}
catch(System.Exception ex)
{
System.Diagnostics.Trace.WriteLine("++++++++++++++++++++++++++++++++++++");
System.Diagnostics.Trace.WriteLine(ex.Message);
System.Diagnostics.Trace.WriteLine(ex.StackTrace);
break;
}
}
return false;
}
class MemberInvokerComparer:IComparer
{
public MemberInvokerComparer()
{
}
#region IComparer 成员
public int Compare(object x, object y)
{
if((x==null) ||(y==null))throw new Exception();
MemberInvoker a=(MemberInvoker)x;
MemberInvoker b=(MemberInvoker)y;
return a.Prior>=b.Prior?1:0;
}
#endregion
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -