草庐IT

c# - 通过 P/Invoke 调用 GetGUIThreadInfo

我想将键盘输入发送到另一个进程中的窗口,而不将该窗口置于前台。我可以使用PostMessage伪造WM_KEYDOWN和WM_KEYUP;我只需要知道哪个窗口句柄应该接收键盘输入——即类似GetFocus的东西,但对于另一个非事件应用程序。GetGUIThreadInfoAPI看起来很有前途——它为另一个应用程序返回一个hwndFocus。但是我没有运气让它在我的64位操作系统上从C#运行。我已经复制(然后进一步调整)来自pinvoke.net的声明,但我得到的只是一个通用错误代码(下面有更多详细信息)。我在调用GetGUIThreadInfo之前设置了cbSize,因此我避免了最明显

c# - 延迟事件处理直到事件被触发

在C#中,延迟处理所有已知事件直到实体被完全修改的最佳方法是什么?例如,一个实体-MyEntity-具有属性ID、名称和描述...publicclassMyEntity{publicInt32ID{get;set;}publicStringName{get;set;}publicStringDescription{get;set;}}当修改每个属性时,每次修改都会触发一个事件。有时,ID是唯一被修改的属性,有时所有属性都被修改。我希望修改事件的注册监听器等待,直到“批处理”中被修改的所有属性都被修改。实现此目标的最佳方法是什么?在我看来,类似于UnitOfWork模式的东西,可以在调用

c# - CA2104 警告 : Is there any way to mark a class as `Immutable` to suppress it?

考虑下面的代码,它触发了CA2104:Donotdeclarereadonlymutablereferencetypes.publicclassTest{//ThisprovokesCA2104:"Donotdeclarereadonlymutablereferencetypes".protectedreadonlyImmutableClassImmutableMember;}publicclassImmutableClass{}有谁知道以一种可以抑制警告CA2104的方式将类标记为不可变的方法吗?我尝试用[ImmutableObject(true)]装饰MutableClass没有成

c# - 注册 'half-closed' 通用组件

我有两个接口(interface):publicinterfaceIQuery{}publicinterfaceIQueryHandlerwhereTQuery:IQuery{TResultHandle(TQueryq);}IQueryHandler的封闭实现示例:publicclassEventBookingsHandler:IQueryHandler>{privatereadonlyDbContext_context;publicEventBookingsHandler(DbContextcontext){_context=context;}publicIEnumerableHan

c# - 如何命名一组旗帜?

例如我有以下标志枚举:[Flags]publicenumColors{Red=1,Green=2,Blue=4}根据MSGuidelines:DOnameflagenumswithpluralnounsornounphrasesandsimpleenumswithsingularnounsornounphrases.所以我在这里使用了复数形式。现在,有anotherguideline以复数形式命名您的收藏:DOnamecollectionpropertieswithapluralphrasedescribingtheitemsinthecollectioninsteadofusinga

c# - 为什么对于这种特定情况,结构比类快得多?

我有三个案例来测试类、具有继承的类和结构的相对性能。这些将用于紧密循环,因此性能很重要。点积被用作2D和3D几何中许多算法的一部分,我已经在真实代码上运行了分析器。以下测试表明了我所见过的现实世界中的性能问题。循环100000000次点积的结果ControlA208ms(classwithinheritence)ControlB201ms(classwithnoinheritence)ControlC85ms(struct)测试在没有调试和优化的情况下运行。我的问题是,在这种情况下,类是什么导致它们如此缓慢?我假设JIT仍然能够内联所有调用、类或结构,因此实际上结果应该是相同的。请注意

c# - 自动生成不可变类和匹配的构建器类

有哪些工具/库可以采用结构并自动生成不可变包装器以及用于增量构建新实例的“构建器”类?示例输入:structFoo{publicintapples;publicintoranges;publicFooClone(){return(Foo)base.MemberwiseClone();}}示例输出:publicclassImmutableFoo//couldprobablybeastruct{privateFoosnapshot;internalImmutableFoo(Foovalue){this.snapshot=value;}publicFooBuilderBuilder(){re

c# - 如何更新 Entity Framework 中的相关实体

我有一个MVC项目,使用EntityFrameworkCodeFirst和POCO对象作为数据库。例如:publicclassClassA{publicint?Id{get;set;}publicstringName{get;set;}publicvirtualClassBB{get;set;}}publicclassClassB{publicint?Id{get;set;}publicstringDescription{get;set;}}我有一个创建或编辑模型的ActionResult。问题是当我调用此ActionResult来更新模型时,model.B已更改,关系未保存在数据库中

c# - IEnumerable 流

我想做一些与下面的代码示例大致相同的事情。我想生成并提供数据流,而不必在任何时候将整个数据集都存储在内存中。似乎我需要一些接受IEnumerable的Stream实现(或IEnumerable)在其构造函数中。在内部,此Stream只会在读取Stream或需要时遍历IEnumerable。但我不知道有这样的Stream实现。我走在正确的轨道上吗?你知道有什么方法可以做这样的事情吗?publicFileStreamResultGetResult(){IEnumerabledata=GetDataForStream();StreamdataStream=ToStringStream(Enc

c# - 如何在我的自定义表而不是 aspnet 用户中保存带有散列密码的新记录?

我正在使用asp.net身份创建新用户但出现错误:CannotinsertthevalueNULLintocolumn'Id',table'Mydb.dbo.AspNetUsers';columndoesnotallownulls.INSERTfails.\r\nThestatementhasbeenterminated但在这里我没有像AspNetUsers这样的表,而是我有自己的表,即Users。代码:Web.config:2个连接字符串IdentityModel.cs:publicclassApplicationUser:IdentityUser{publicasyncTaskGe