问2个很严重的问题..
1.)
比如对一个List<T> list进行排序...list.orderby(a=>a.属性).thenby(xx)...
我发现很多人都用这类型的东西..类似where(a=>a xxxxx)..感觉挺过瘾的..
这类东西是linq吗?
2.)
现在有个接口IX,另外有2个实现是IA,IB
我能不能通过一个传进来的字符串..比如传来一个string str="IA";我就返回IA,是IB就返回IB
public IX a(string str){
IX ix=str的内容的类型
return ix;
}
别告诉我用if判断...那如果有100个现实不就要写100个if了...
这是不是可以用反射来解决?大概应该怎么弄?
希望各位前辈指教
------最佳解决方案--------------------第二个可能通过反射过实现
具体的实现可以上网上搜一下
------其他解决方案--------------------第一个是linq,第二个用反射的 Assembly的CreateInstance
------其他解决方案-------------------- static void Main(string[] args)
{
var t = a("IA");
Console.ReadLine();
}
public static IX a(string str)
{
var t = Assembly.GetAssembly(Type.GetType("ConsoleApplication1." + str)).CreateInstance("ConsoleApplication1." + str);//ConsoleApplication1是命名空间
return (IX)t;
}
------其他解决方案--------------------1.linq
2.不是反射你是接口,反射就没啥能力了,这个通常解决方法是配置类或者IOC控制类
------其他解决方案--------------------看看linq命名控件的方法及简介就知道了
可以通过反射实现
------其他解决方案--------------------1. lamuda表达式。不是linq,函数式编码。怀疑是通过匿名委托实现的。
2.你试试getType里找到最末级的派生类然后就很简单了。
------其他解决方案--------------------1.是lamuda,匿名方法!是一个委托的实现。
2.依赖注入,当然C#离最方便的办法是反射。
------其他解决方案--------------------谢谢楼上的各位..下个星期的学习就学习它们2个了..