构造函数 | |
---|---|
public Literacy(Type) | 初始化对象属性,字段访问组件,建立大小写敏感的访问实例 var user = new { Name = "blqw", Sex = "男" }; Literacy lit = new Literacy(user.GetType()); string name = (string)lit.Property["Name"].GetValue(user); //name = "blqw" |
public Literacy(Type, bool) | 初始化对象属性,字段访问组件,参数2指示是否需要区分大小写 默认初始化仅加载公共的实例属性需要支持其他属性或字段需使用Load中的相关方法 var user = new { Name = "blqw", Sex = "男" }; Literacy lit = new Literacy(user.GetType(),true); string name = (string)lit.Property["Name"].GetValue(user); //name = "blqw" string name2 = (string)lit.Property["name"].GetValue(user);//不区分大小写 //name2 = "blqw" |
方法 | |
object NewObject() | 调用对象的无参构造函数,新建对象 Literacy lit = new Literacy(typeof(Guid)); Guid g = (Guid)lit.NewObject(); //g = 00000000-0000-0000-0000-000000000000 |
属性 | |
ILoadMember Load | 加载更多属性或字段 默认初始化仅加载公共的实例属性需要支持其他属性或字段需使用Load中的相关方法 string str = "abc"; Literacy lit = new Literacy(str.GetType()); lit.Load.NonPublicField(); //加载非公共的实例字段 Char c = (char)lit.Field["m_firstChar"].GetValue(str); //c = 'a'; |
ObjectPropertyCollection Property | 属性集合 默认初始化仅加载公共的实例属性需要加载其他属性需使用Load中的相关方法 var user = new { Name = "blqw", Sex = "男" }; Literacy lit = new Literacy(user.GetType()); string name = (string)lit.Property["Name"].GetValue(user); //name = "blqw" bool b = lit.Property["Sex"].TrySetValue(user, "女"); //b = false user.Sex = "男" lit.Property["Sex"].SetValue(user, "女"); //抛出异常: throw new Exception("属性没有公开的Set访问器"); |
ObjectPropertyCollection Field | 字段集合 默认值为null加载字段需使用Load中的相关方法 string str = "abc"; Literacy lit = new Literacy(str.GetType()); lit.Load.NonPublicField(); //加载非公共的实例字段 Char c = (char)lit.Field["m_firstChar"].GetValue(str); //c = 'a'; lit.Field["m_firstChar"].SetValue(str, 'A'); //str = "Abc"; |
静态方法 | |
Literacypublic class Literacy Cache(Type,bool) | 从缓存中获取一个Literacy对象,如果没有则新建缓存2013.08.30新 参数2指示,该Literacy对象是否需要区分大小写这个方法是线程安全的 var user = new { Name = "blqw", Sex = "男" }; Literacy lit1 = Literacy.Cache(user.GetType(), true); Literacy lit2 = Literacy.Cache(user.GetType(), false); Literacy lit3 = Literacy.Cache(user.GetType(), true); bool b1 = lit1 == lit2; bool b2 = lit1 == lit3; |
LiteracyNewObject public delegate object LiteracyNewObject(params object[] args); CreateNewObject(Type,Type[]) | IL构造一个用于调用对象构造函数的委托 参数1:获取构造函数的对象参数2:构造函数的参数,默认null LiteracyNewObject nb = Literacy.CreateNewObject(typeof(Guid)); Guid g = (Guid)nb(); //g = 00000000-0000-0000-0000-000000000000 |
LiteracyGetter public delegate object LiteracyGetter(object obj); CreateGetter(PropertyInfo) | IL构造一个用于获取对象属性值的委托 DataTable table = new DataTable(); table.TableName = "User"; LiteracyGetter get = Literacy.CreateGetter(table.GetType().GetProperty("TableName")); var tableName = get(table); //tableName = "User" |
LiteracyGetter public delegate object LiteracyGetter(object obj); CreateGetter(FieldInfo) | IL构造一个用于获取对象字段值的委托 LiteracyGetter get = Literacy.CreateGetter(typeof(string).GetField("m_firstChar", BindingFlags.NonPublic | BindingFlags.Instance)); char c = (char)get("123456789"); //c == '1' |
LiteracySetter public delegate void LiteracySetter(object obj, object value); CreateSetter(PropertyInfo) | IL构造一个用于设置对象属性值的委托 DataTable table = new DataTable(); table.TableName = "User"; LiteracySetter set = Literacy.CreateSetter(table.GetType().GetProperty("TableName")); set(table,"NewTableName"); //table.TableName = "NewTableName" |
LiteracySetter public delegate void LiteracySetter(object obj, object value); CreateSetter(FieldInfo) | IL构造一个用于设置对象字段值的委托 LiteracySetter set = Literacy.CreateSetter(typeof(string).GetField("m_firstChar", BindingFlags.NonPublic | BindingFlags.Instance)); string s = "123456789"; set(s,'a'); //s = "a23456789" |
LiteracyCaller public delegate object LiteracyCaller(object obj, params object[] args); CreateCaller(MethodInfo) | IL构造一个用于执行方法的委托 LiteracyCaller met = Literacy.CreateCaller(typeof(Guid).GetMethod("ToString", new[] { typeof(string) })); string s = (string)met(Guid.NewGuid(), "N"); //s = "4b857b9807f900009e37726b10187d4c" s = (string)met(Guid.NewGuid(), ""); //s = "4b857b98-07f9-0000-b18a-872db2409a43" |
调试新模版
最新推荐文章于 2022-05-13 15:11:57 发布