日期:2014-05-17  浏览次数:20688 次

问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个了..