小编And*_*aus的帖子

C#/ Linq:将映射函数应用于IEnumerable中的每个元素?

我一直在寻找一种方法,使用映射函数(以Linq兼容的方式)将IEnumerable的每个元素转换为其他元素,但我还没有找到任何东西.

对于(非常简单的)示例,它应该能够做类似的事情

IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
Run Code Online (Sandbox Code Playgroud)

但我还没有找到任何东西.我的意思是,编写一个完成它的扩展方法非常简单(基本上,它只需要将源枚举器包装到一个新类中,然后编写一些样板代码用于委托调用它),但我希望如此这是一个相当基本的操作,自己写它就像重新发明轮子一样 - 我无法摆脱可能存在我应该使用的内置方式的感觉,我只是太盲目看不到它.

那么...... Linq中有什么东西允许我做我上面描述的事情吗?

c# linq

94
推荐指数
2
解决办法
9万
查看次数

如何将DWORD放在具有最高位集的注册表中

我遇到了一个奇怪的问题:当从我的C#应用​​程序在Windows注册表中设置DWORD类型的值时,我在设置最高位时不断收到错误.显然,有符号和无符号整数之间似乎存在某种转换问题.

示例:当我做这样的事情时

regKey.SetValue("Value", 0x70000000u, RegistryValueKind.DWord);
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是当我添加最高位(由于我专门处理无符号整数,应该只是另一个值位),就像这样

regKey.SetValue("Value", 0xf0000000u, RegistryValueKind.DWord);
Run Code Online (Sandbox Code Playgroud)

我得到一个异常("值对象的类型与指定的RegistryValueKind不匹配,或者无法正确转换对象").

但它应该不起作用?DWORD是一个无符号的32位整数数据类型,0xf0000000u文字也是如此(C#自动为其分配UInt32数据类型),因此它们应该是完美的匹配(并且在注册表编辑器中手动将值设置为"0xf0000000"工作正常,太).这是.NET中的错误还是我做错了什么?

c# windows registry types

18
推荐指数
1
解决办法
1万
查看次数

GWT MVP与地方和活动 - 模型在哪里?

我正在努力熟悉GWT开发的"地点和活动"设计模式,到目前为止我认为它有很大的潜力.我特别喜欢这样一种方式,一旦你开始考虑你的应用程序的"地方",浏览器历史几乎只是在你的大腿上,几乎没有额外的努力.

然而,有一件事让我感到困扰:到目前为止我看到的所有文章和代码示例都掩盖了一个(就我而言,主要的)方面:'MVP'的'M'部分,即模型!

在普通的MVP架构中,据我所知,Presenter拥有对Model的引用,并负责根据UI事件更新它,或者根据Model更改更新UI.

现在,在"P&A"的所有文章/样本中,活动似乎取代了Presenter,但与"普通"主持人不同,他们会在新地方到达时被丢弃并重新创建,因此他们可以'是存储客户端状态的那个,或者每次都会丢失.活动起来很便宜,所以这不是一件麻烦事,但我不想一遍又一遍地创建复杂应用程序的模型.

所有样本都相当简单,并且没有太多的状态,因此只是忽略了Model方面,但是实际的,复杂的应用程序在哪里存储它的状态?

mvp gwt

14
推荐指数
2
解决办法
4445
查看次数

Dokan/Dokan.NET(不)支持同步I/O吗?

我使用Dokan(.NET)库在C#中创建了一个虚拟驱动器,它运行得很好.

但是,当我尝试从另一个应用程序中的驱动器读取文件时,每当使用同步读取的操作时,我都会收到异常,例如System.IO.File.ReadAllText(...).

异常的文本是:"Handle不支持同步操作.可能需要更改FileStream构造函数的参数以指示句柄是异步打开的".

因此,如果我正确地解释这一点,.NET显然会尝试在单个同步操作中读取文件的整个内容,但Dokan似乎不允许这样做.

但是当使用像ReadAllText我这样的方法时,实际上并没有对FileStream构造方式进行任何控制(这不是该方法的全部意义,毕竟,只需获取文件内容而不必费心使用Streams和Readers and Buffers什么?).

我可以让Dokan以某种方式支持文件句柄上的同步I/O访问吗?或者我必须以某种方式忍受在Dokan托管文件上无法实现同步操作的事实(并且希望没有可能必须在我的虚拟驱动器上运行的应用程序依赖于它们)?

c# io file dokan

8
推荐指数
1
解决办法
988
查看次数

Shell命名空间扩展无法在Windows 7中加载

我目前正在尝试创建一个自定义Shell名称空间扩展(用于呈现包含"子文件夹"和"文件"的虚拟文件夹,这实际上是来自远程服务的分层树结构中的数据表示).

扩展名是C#编写的,我知道 - 曾经是一个坏主意,但自从.NET 4引入了同一进程中不同版本的.NET运行时共存的可能性后,我认为这种限制不再一个问题.

到目前为止,我已经通过遵循网络上提供的大量示例和参考资料在Windows XP中运行良好,但是当我在Windows 7中尝试它时(我还没有在Vista中尝试过,所以我不知道是否它会工作),扩展没有加载.根据我的调试日志输出,它注册正常,但是当我打开一个Windows资源管理器窗口时,似乎没有发生对COM接口的常规调用(通常以IPersistFolder :: Initialize开头).实际上,甚至没有调用类构造函数.我不知道是否正在查询接口(成功与否),因为我不确定如何在.NET中检测到这些,所以我可以记录它.所以,基本上,我没有任何线索,因为它甚至在我有机会记录任何可能出错的有用信息之前就失败了.

有没有人碰巧知道问题可能是什么?在处理我应该注意的shell命名空间扩展时,Windows 7中是否存在与Windows XP相比需要考虑的特性?如果需要更多详细信息,请随时询问(我试着保持简短,因为我确定没有人会感谢我在这里复制和粘贴我的整个代码,而且我无法将其简化为相关部分因为我只是不喜欢我不知道这些是......

.net windows-shell windows-7

5
推荐指数
1
解决办法
980
查看次数

标签 统计

c# ×3

.net ×1

dokan ×1

file ×1

gwt ×1

io ×1

linq ×1

mvp ×1

registry ×1

types ×1

windows ×1

windows-7 ×1

windows-shell ×1