小编Max*_*ing的帖子

如何使用LINQ将List <string>中的所有字符串转换为小写?

昨天我在StackOverflow上的一个回复中看到了一个代码片段,这引起了我的兴趣.它是这样的:

 List<string> myList = new List<string> {"aBc", "HELLO", "GoodBye"};

 myList.ForEach(d=>d.ToLower());
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用它将myList中的所有项目转换为小写.但是,它不会发生...运行此命令后,myList中的大小不变.

所以我的问题是,是否有一种方法,使用LINQ和Lambda表达式轻松地迭代并以类似于此的方式修改列表的内容.

谢谢,马克斯

c# linq foreach lambda

87
推荐指数
3
解决办法
8万
查看次数

C#Assembly.Load vs Assembly.ReflectionOnlyLoad

我试图理解Assembly.Load和Assembly.ReflectionOnlyLoad之间的区别.

在下面的代码中,我试图找到从给定接口继承的给定程序集中的所有对象:

var myTypes = new List<Type>();

var assembly = Assembly.Load("MyProject.Components");

foreach (var type in assembly.GetTypes())
{
   if (type.GetInterfaces().Contains(typeof(ISuperInterface)))
   {
      myTypes.Add(type);
   }
}
Run Code Online (Sandbox Code Playgroud)

这段代码对我来说很好,但我正在研究其他可能更好的替代方案,并遇到了Assembly.ReflectionOnlyLoad()方法.

我假设因为我没有加载或执行任何对象,基本上只是查询他们的定义我可以使用ReflectionOnlyLoad来略微提升性能......

但事实证明,当我将Assembly.Load更改为Assembly.ReflectionOnlyLoad时,我调用assembly.GetTypes()时会收到以下错误:

System.Reflection.ReflectionTypeLoadException:
Run Code Online (Sandbox Code Playgroud)

无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.

我假设上面的代码只是做反射和"查看"库...但是这是Heisenberg不确定性原理的某种实例,通过查看库和它中的对象实际上是试图在某些实例化它们办法?

谢谢,马克斯

c# reflection assembly.load assembly.reflectiononly

48
推荐指数
3
解决办法
3万
查看次数

如何为自定义控件定义默认"TagPrefix"

我有许多自定义控件,我正在尝试启用设计器支持.签名看起来如下所示:

[ToolboxData("<{0}:MyDropDownList runat=\"server\" CustomProp="123"></{0}:MyDropDownList>")]
public class MyDropDownList: DropDownList
{
   ... code here
}
Run Code Online (Sandbox Code Playgroud)

这很好,但是当我从工具箱中将控件拖到页面上时,添加的TagPrefix是"cc1":

<%@ Register Assembly="DBMClientPortal.Controls" Namespace="DBMClientPortal.Controls"
    TagPrefix="cc1" %>
Run Code Online (Sandbox Code Playgroud)

显然,与TagPrefix相比,它有点无关紧要......它的工作原理,但我认为我必须能够以某种方式改变它,好奇心让我变得更好......

任何人都知道如何定义在Visual Studio中将自定义控件拖到页面上时TagPrefix将被设置为什么?

谢谢,马克斯

asp.net

9
推荐指数
1
解决办法
9055
查看次数