小编Kev*_*ose的帖子

寻找一种快速简便的方法来合并POCO上的所有属性

我有一些普通的类,有一堆简单的属性(简单的{get; set;}声明).所有属性都可以为空(或等效地,引用类型).

例如:

class POCO
{
  int? Field1 { get; set; }
  string Field2 { get; set; }
  ... etc ...
}
Run Code Online (Sandbox Code Playgroud)

我有一个场景,我正在逐步构建这些POCO,最后我想让其中一个包含所有非空字段.

一些说明性代码:

POCO o1 = LoadFields1To3();
POCO o2 = LoadFields4To5();
POCO o3 = LoadFields6To9();
... etc ...
Run Code Online (Sandbox Code Playgroud)

我们处于这种情况是因为某些字段是从SQL加载的(有时是不同的查询),而有些是从内存数据结构中加载的.我在这里重新使用POCO类型来避免一堆其他无意义的类(静态类型对于Dapper来说非常有用,而且一般来说).

我正在寻找的是将这些对象的属性合并为具有非null属性的单个属性的好方法.

就像是:

POCO final = o1.UnionProperties(o2).UnionProperties(o3) // and so on
Run Code Online (Sandbox Code Playgroud)

我能够保证在多个对象上没有字段为非null.虽然我假设一个解决方案会采用最左边的非空字段,但实际上并不是必需的.

我知道我可以写一些反射代码来做到这一点,但它有点讨厌和缓慢.

这确实需要通用,因为虽然我从不打算合并不同类型的对象,但是这种方法适用的类型非常多.

我想知道是否有一些更聪明的方式,也许 AB用动态?

c# reflection

14
推荐指数
1
解决办法
1791
查看次数

从xyz磁力计(iPhone 3.0)获得磁北

我实际上是从iphone开发板上转发一个问题.我没有问过,但是在试图找到答案时我发现了它.还没有人在那里做出回应,所以我想我会尝试在这里发布.

在此先感谢您的帮助!

有没有人知道关于从CLHeading的原始xyz值计算磁航向的算法的任何细节?我相信必须有一个通用的方法,适用于不同的磁力计.

iphone objective-c magnetometer

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

使用WPF WebBrowser显示内容来阻止滚动条

我正在使用WPF WebBrowser组件来显示一些非常简单的HTML内容.但是,由于我事先并不知道内容大小,因此当我加载某些数据集时,我正在获取控件上的滚动条.

基本上,我如何强制(或以其他方式影响相当于强制)WebBrowser扩展大小,以便显示所有内容而不需要滚动条?

c# wpf scrollbar webbrowser-control

10
推荐指数
2
解决办法
8122
查看次数

获取Visual Studio以使用自定义主机factoryType突出显示Razor语法

这是场景,我已经扩展了MvcWebRazorHostFactory,所以我可以在构建时做一些额外的视图魔术.确切的魔法并不重要.

我的〜\ Views\Web.config中的注册如下所示:

<host factoryType="StackExchange.MyNamespace.MyFactory, StackExchange.MyNamespace" />
Run Code Online (Sandbox Code Playgroud)

在项目中有适当的程序集,在\ lib文件夹中有一个程序集的副本,我已经确认它已按预期复制到\ bin.此外,实际视图魔术确实发生在构建视图时,因此ASP.NET本身实际上正在查找所有内容.

什么在Visual Studio(2012)的Razor 语法高亮显示中不起作用.

在此输入图像描述

以上是语法突出显示失败的快照.通常,不能直接@using找到名称空间中的任何内容(因此得到红色波浪线下划线)并且该@model指令不起作用.这表示在Web.config中获取自动包含的命名空间时遇到一些麻烦.

错误的工具提示@model是"名称'模型'在当前上下文中不存在".

通过反复试验,我已经将根本原因缩小到上面的host配置部分,虽然我们对Razor(例如自定义的pageBaseType)进行了一些其他的调整,但是这一行打破了一切.

到目前为止我尝试过的事情:

  • 强烈命名组件
  • 在GAC中安装组件

当强烈命名我的〜\ Views\Web.config最终看起来像这样:

<host factoryType="StackExchange.MyNamespace.MyFactory, StackExchange.MyNamespace, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b61d663b67b05bd2" />
Run Code Online (Sandbox Code Playgroud)

我使用"gacutil -l"检查了GAC的Version,Culture和PublicKeyToken.

我认为另一个可能的失败点是GAC本身,因为我的盒子上有很多.NET版本.程序集和Web站点都是使用.NET 4.5构建的(都引用了MVC 4,Razor 2等).gacutil调试时我一直在使用的路径Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\gacutil.exe.

偶尔在我的根本原因中,我会在视图的第一行收到错误消息"无法找到StackExchange.MyNamespace.MyFactory".下划线将采用"其他错误"颜色(VS2012黑暗主题中的紫色).我无法可靠地重现它,所以我无法获得截图.


所以我的问题是,有没有人知道如何让Visual Studio(2012再次)使用自定义主机工厂正确处理Razor Views?

我目前对修复的最佳猜测是做一些非常hacky的Web.config替换,所以我在编辑时有一个配置,在调试时有另一个配置.真的不是这个想法的粉丝.

看起来这应该可行,并且Visual Studio只是在找到它需要的东西时遇到麻烦.我只是不知道那是什么.


经过一些实验后更新.

我有更多的开发人员重现它<host pageFactoryType="...">,包括在一个vanilla MVC4应用程序中(上面的例子显然是来自StackOverflow解决方案;这可能有些瑕疵).

我们找到了一个解决办法,就是购买ReSharper许可证.不是一个伟大的(或廉价的)工作,但一个工作无所不在. …

c# razor asp.net-mvc-4 visual-studio-2012

10
推荐指数
1
解决办法
1960
查看次数

供应商前缀css偏离当前标准

我正在尝试找到一个资源,其中包含一个特定于浏览器的CSS属性实现列表,这些实现偏离了当前的W3C标准.

例如,假设IE支持这样的事情:

.my-class {
  -ms-foo: fizz buzz;
}
Run Code Online (Sandbox Code Playgroud)

但当提案成为候选人推荐时,标准化的等价物是:

.my-class {
  foo: buzz fizz;
}
Run Code Online (Sandbox Code Playgroud)

为了支持在CR之前发布的IE版本,我想写:

.my-class {
  -ms-foo: fizz buzz;
  foo: buzz fizz;
}
Run Code Online (Sandbox Code Playgroud)

谷歌搜索这些变化的列表并没有非常富有成效,有许多围绕供应商前缀的嚎叫和咬牙切齿,但没有很多"陷阱"列表.到目前为止,我发现最好的是随意提及变化(在这种情况下-webkit-border-radius),但那些很少记录实际的预期输入; 他们倾向于给出一个破碎的例子.

我找到了一个存在的前缀的OK 列表(以及它们的标准状态),但不幸的是它没有提供发现我感兴趣的更改所需的那种细节.

那么,是否存在任何此类列表?

我将采用部分列表,或者排除真正旧浏览器的部分(例如,并不真正关心IE6).我也只关心3.1大浏览器(IE,Firefox,Webkit/Chrome/Safari和Opera).

我还关心W3C没有解决的问题(比如外观),这是一个很难解决的问题,而不用担心供应商直接编写的东西.

css vendor-prefix

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

使用OpenID来证明Stackoverflow成员资格

这是交易:
- Flair几乎要求Facebook应用程序 -
我正在努力学习Facebook平台

因此,我写了一个小巧的Facebook应用程序,将你的Flair嵌入到你个人资料一侧的方框中. 如果您对Facebook感兴趣 ; 请注意,这是一项非常重要的工作,容易发生变化并且有一大堆粗糙的边缘.

但是,我没有一种优雅的方式来说明这是"这是我的Stackoverflow配置文件"来自这个极简的应用程序.我目前的解决方案最能证明这一形象.坦率地说,这是愚蠢的; 并没有什么可以阻止冒充.

没有OpenID的经验,我想知道是否有某种方式(以及这种方式的一些例子)让用户向第三方提供他们的Stackoverflow标识?


行为改变为Noldorin的回答.在UserVoice上
请求以更好的方式执行此操作.

php openid facebook stackexchange-api

7
推荐指数
1
解决办法
635
查看次数

如何绑定Text Box的SelectionStart属性?

我用这个:

<TextBox x:Name="Test"/>
<TextBlock Text="{Binding SelectionStart, ElementName=Test}"/>
Run Code Online (Sandbox Code Playgroud)

但它总是显示0.
我该如何对待它?
谢谢.

silverlight binding textbox selection

7
推荐指数
2
解决办法
4970
查看次数

哪个区域主要使用c ++?

我的青少年多次询问过C++被广泛使用的领域.我经常回答操作系统.是否还有其他广泛使用的领域?

c++

7
推荐指数
2
解决办法
8178
查看次数

在ASP.NET中使用线程有任何非明显的危险吗?

对于这个程序员的问题,这是一个兄弟问题.

简而言之,我们正在考虑将一些一直支持用户请求的工作推送到后台"正确".如果我们走的是服务路线,这个相关的问题给了我很多想法,但是并没有真正提供任何有说服力的论据,说明为什么,我们应该这样做.

我会承认,对我来说,做道德等同的能力

WorkQueue.Push(delegate(object context) { ... });
Run Code Online (Sandbox Code Playgroud)

真的很引人注目,所以如果它有点困难(而不是天生就不可行),我倾向于采用后台线程方法.

所以,我知道的后台线程问题(在AppPool的上下文中):

  • 由于AppPool被回收,它们可能随时死亡
    • 解决方案:跟踪任务执行的时间,因此可以重新运行*如果需要新线程
  • 所述线程池用于向传入的HTTP响应查询,所以使用它可以饿死IIS
    • 解决方案:构建我们自己的线程池,同时限制线程数.

我的问题是,如果有的话,我错过了什么? 在ASP.NET中使用后台线程会出现什么问题?

*问题中的任务已经安全重新运行,所以这不是问题.
ǂ假设我们没有做任何真正愚蠢的事情,比如在后台线程中抛出异常.

c# asp.net multithreading asp.net-mvc-2

7
推荐指数
1
解决办法
1274
查看次数

CIL中的普通和短格操作码有什么区别?

我正在浏览CIL中的各种操作码,我发现很多类似的代码,如Beq,Beq_S Bge,Bge_S Bgt,Bgt_S Br,Br_S

S应该是"短形式".那是什么意思??

cil

7
推荐指数
1
解决办法
653
查看次数