四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

LINQ TO Reflection

  引言

  我們平時開發中不可避免,或者說,經常性的使用反射。但是卻沒有一個合適的類庫幫助我們更好的利用反射。從早期的FastInvoker,到老趙的 fastreflectionlib ,無一不是在強調Fast。這是因為反射的性能損耗比較厲害,所以大家都集中精力解決性能的問題,但是在易用性方面卻鮮有改進。今天我為大家帶來一個即兼顧性能又具有良好的使用體驗的反射類庫.

  .Metadata()

  此類庫以LINQ TO Object為基礎,可以通過調用.Metadata()方法獲取對應Type的完整Metadata信息。此信息會被進行緩存,并且使用fastreflectionlib的核心Lambda代碼,利用DynamicMethod代替直接的反射執行。

        public static Metadata Metadata(this object instance)
{
return MetadataCache.Create(instance);
}

     先定義一個MockObject

        class MockAttribute : Attribute
{
public MockAttribute(string name)
{
this.Name = name;
}
public string Name
{
get;set;
}
}

class MockObject
{
public string Country = "China";

[Mock("this is the name")]
public string Name
{
get;set;
}
public string Blog
{
get;set;
}
[Mock("this is the location")]
public string Location
{
get;set;
}
public string SayHello(string name)
{
return "Hi," + name;
}
}
}

   1.如何獲取一個屬性,并進行取值、賦值?

        using Sparrow.Reflection;
[TestMethod]
public void set_property_value()
{
var obj = new MockObject { Name = "dayi", Blog = "http://walkingboy.cnblogs.com", Location = "XiaMen" };
var property = obj.Metadata().Properties.Where(i => i.Name == "Location").FirstOrDefault();
var changedLocation = "Xiamen,China";
//get value //var value = property.GetValue(obj); property.SetValue(obj, changedLocation); Assert.AreEqual(changedLocation, obj.Location); }

   2.如果獲取一個字段的值?

        using Sparrow.Reflection;
[TestMethod]
public void get_field_value()
{
var obj = new MockObject();

var field = obj.Metadata().Fields.Where(i => i.Name == "Country").FirstOrDefault();

Assert.AreEqual("China", field.GetValue(obj));
}

NET技術LINQ TO Reflection,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 刑道荣| 鹿单东演过的短剧| 生理卫生课程| 355 电影| 高潮艺术| 恋爱不可抗力电视剧在线观看| 巫山历险记| 闵度允李采潭| 魔法少女砂沙美| 建设工程监理规范最新版50319-2019| 梁祝吉他谱独奏完整| 河东舞曲的士高| 中国古代寓言阅读记录卡| 祝福你| 山东教育电视台直播| 二十二吉他谱| 黑丝高跟鞋美女| 痛风能吃豆腐吗| 新藤惠美| 山上的小屋 残雪| 黄网站在线观看视频| 鹌鹑图片| x档案第二季| 思念天边的你简谱| 女生操女生| 威利| 妈妈的花样年华演员表全部| 五年级简易方程40题| 龙争虎斗| 做菜视频| 必修二英语电子课本外研版| 南北腿王| 大家都在搜| 王子奇个人资料| 高一英语必修一| 林一个人简介资料| juliaann女医生在办公室| 东方卫视节目表| 我在等你泰剧剧情介绍| 五年级下册语文第五单元| 追捕演员表|