开发学院WEB开发ASP.NET LINQ to Reflection反射机制 阅读

LINQ to Reflection反射机制

 2010-12-02 07:06:56 来源:WEB开发网   
核心提示:1.如何获取一个属性,并进行取值、赋值?using Sparrow.Reflection; [TestMethod] public void set_property_value() { var obj = new MockObject { Name = "dayi", Blog = &

1.如何获取一个属性,并进行取值、赋值?

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

2.如果获取一个字段的值?

  1. using Sparrow.Reflection;      
  2. [TestMethod]      
  3. public void get_field_value()      
  4.  {        
  5. var obj = new MockObject();        
  6. var field = obj.Metadata().Fields.Where(i => i.Name == "Country").FirstOrDefault();  
  7. Assert.AreEqual("China", field.GetValue(obj));      
  8.  }  

3.如何获取一个自定义CustomAttribute?

  1. using Sparrow.Reflection;      
  2. [TestMethod]      
  3. public void get_custom_attribute_data()    {        
  4. var obj = new MockObject { Name = "dayi", Blog = "http://walkingboy.cnblogs.com", Location = "XiaMen" };        
  5.  var attribute = obj.Metadata().Properties          
  6.  .Where(i => i.Name == "Name")          
  7.  .SelectMany(i => i.Attributes)          
  8.  .Select(i=>i.Attribute)          
  9. .OfType<MockAttribute>()          
  10. .FirstOrDefault();        
  11. Assert.AreEqual("this is the name", attribute.Name);     
  12.  }  

4.如何调用一个指定名称的Method?

  1. using Sparrow.Reflection;      
  2. [TestMethod]      
  3. public void invoke_method()     
  4.   {        
  5. var obj = new MockObject();        
  6. var method = obj.Metadata().Methods.Where(i => i.Name == "SayHello").FirstOrDefault();  
  7. Assert.AreEqual("Hi,world",method.Invoke(obj,new []{"world"}));     
  8.   }.Proxy() 

上一页  1 2 3 4  下一页

Tags:LINQ to Reflection

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接