我们都知道匿名类的定义可以用属性,如:
var obj = new { Name = "crab", Age = 23 };
那么我们如何在匿名类中定义方法呢?就像JAVA中可以对匿名类定义匿名方法。
首先我想到了委托,
定义一个委托 public delegate string SayHelloHandler( string name );
然后定义一个与该委托相同方法签名的方法
public string MySayHello( string name ) { return string.Format( "Hello, {0}!", name ); }
最后定义匿名类
var obj = new { Name = "crab", Age = 23
, SayHello = new SayHelloHandler( MySayHello ) };
调用方法:obj.SayHello( "nanhuacrab" );
经测试这是一种可行的方案。
接着我想到了匿名方法,
var obj = new { Name = "crab", Age = 23
, SayHello = delegete( string name ) { return string.Formate( "Hello, {0}!", name ); } };
经测试此方案不行。
最后想到了Lambda表达式,
var obj = new { Name = "crab', Age = 23
, SayHello = (name) => { return string.Formate( "Hello, {0}!", name ); } };
经测试此方案也不行。
梦里花落0921
相关分类