小编Geo*_*uer的帖子

.NET:是否有String.Format表单用于将对象属性的值插入字符串?

我认为这个问题的直接答案是"不",但我希望有人写了一个真正的简单库来做这件事(或者我可以做到......呃...)

让我用一个例子展示我正在寻找的东西.假设我有以下内容:

class Person {
  string Name {get; set;}
  int NumberOfCats {get; set;}
  DateTime TimeTheyWillDie {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情:

static void Main() {
  var p1 = new Person() {Name="John", NumberOfCats=0, TimeTheyWillDie=DateTime.Today};
  var p2 = new Person() {Name="Mary", NumberOfCats=50, TimeTheyWIllDie=DateTime.Max};

  var str = String.Format(

"{0:Name} has {0:NumberOfCats} cats and {1:Name} has {1:NumberOfCats} cats.  They will die {0:TimeTheyWillDie} and {1:TimeTheyWillDie} respectively
", p1, p2);

  Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道是否有这样的格式,或者有人写了一个库来做这件事?我知道它不应该太难,但我宁愿不重新实现轮子.

.net string string.format

8
推荐指数
2
解决办法
2264
查看次数

流畅的NHibernate - 如何配置oracle?

几乎可以肯定是一个愚蠢的问题,但我无法在任何地方找到答案.

入门教程中,数据库是SQLite,因此他的会话工厂创建是使用FluentNHibernate.Cfg.Db命名空间中的SQLiteConfiguration类完成的.

大!但我没有看到使用Oracle数据库的Configuration类.我该怎么做呢?

交叉发布到流利的NH邮件列表(带答案)

oracle nhibernate fluent-nhibernate

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

使用WinForms进行MVP异步调用的最佳实践

我在WinForms项目中使用了Model-View-Presenter模式,我遇到的一个问题是当表单告诉演示者做某事然后在演示者去做时没有反应时.幸运的是,在我的项目中,我所有的presenter调用都是异步的,问题是如何做到这一点?

每个演示者调用是否应该包含在新的线程创建中?*

new Thread(()=>_presenter.DoSomething()).Start();
Run Code Online (Sandbox Code Playgroud)

这里最好的做法是什么?如果用户按下"中止您正在做的事情"按钮怎么办?我该如何优雅地流产?

.*实际上我可能只是在演示者上使用某种代理来执行此操作而不是将线程创建放在WinForm中

.net mvp multithreading winforms

8
推荐指数
2
解决办法
2419
查看次数

log4net - 用于仅记录第N条消息的任何过滤器?

我有一个不断从设备读取值的组件.目前,它每隔{n}秒更新一次,并将带有值的调试消息记录到ILog实例.

每一秒对我来说太频繁了,我只是不在乎它会占用太多的日志空间.但是,我当然有兴趣从该组件捕获每个第10或第30条消息,这样我就可以得到它正在做的事情的一般要点.

有没有人知道这样做的方式不涉及我自己的ILog实现?

.net log4net

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

如何在自定义configSection中指定集合

我想有一个xml配置文件,如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
    <section name="plugins" type="MyApp.PluginsConfiguration, MyApp"/>
</configSections>

<plugins>
    <use assembly="MyApp.Plugin1.dll" />
    <use assembly="MyApp.Plugin2.dll" />
</plugins>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我如何安排我的代码中的PluginsConfigurations,UsePluginCollection和UsePlugin类之间的相互作用?

我在网上找到了这个教程,但它会在插件中引入一个围绕使用集合的元素,我不需要这个.

是我到目前为止所做的,但不太正确

.net configuration config-files

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

为什么选项["foo"] || options.foo?

通过knockout.js源代码阅读我来到这一行

disposeWhenOption = options["disposeWhen"] || options.disposeWhen
Run Code Online (Sandbox Code Playgroud)

我之前从未见过这个,我所知道的关于javascript的所有内容都表明,如果双方的||情况不同,就不会有这种情况.为什么淘汰赛团队会使用这个结构?

javascript knockout.js

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

使用以反斜杠结尾的字符串时,ConvertTo-Json会引发错误

以下代码生成错误

W:\surge\ogre> @{SolutionDir='W:\Surge\ogre\'} | ConvertTo-Json
ConvertTo-Json : The converted JSON string is in bad format.
At line:1 char:35
+ @{SolutionDir='W:\Surge\ogre\'} | ConvertTo-Json
+                                   ~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Collections.Hashtable:PSObject) [ConvertTo-Json], InvalidOperationException
    + FullyQualifiedErrorId : JsonStringInBadFormat,Microsoft.PowerShell.Commands.ConvertToJsonCommand
Run Code Online (Sandbox Code Playgroud)

为什么?我怎么能解决这个问题?这是在预建事件中,所以我试图保持单线和尽可能紧凑.

powershell

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

如何删除所有resharper键绑定?

我喜欢resharper很好,但是随着新的定价,试验用完了,我想尝试没有它的生活.

除非禁用所有Resharper命令仍然绑定在我的键盘选项中!因此ctrl+,,不会回退到标准的VS行为,因为它的绑定Resharper.Resharper_GotoRecentEdits当然是禁用的.

即使单击键盘选项中的重置也不会删除键绑定.那到底是什么.我如何摆脱所有的resharper东西?它目前暂停,没有菜单项.

这是带有Resharper Ultimate试用版的Visual Studio 2015

resharper visual-studio

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

如何将数据验证与我的简单域对象(PO​​CO)分开?

这个问题与语言无关,但我是C#家伙所以我使用术语POCO来表示一个只能预先形成数据存储的对象,通常使用getter和setter字段.

我只是将我的领域模型重新设计成超级PCOO,并且对于如何确保属性值在域中有意义而留下了一些问题.

例如,服务的EndDate不应超过服务所在合同的EndDate.但是,将检查放入Service.EndDate设置器似乎违反了SOLID,更不用说随着需要完成的验证数量增加,我的POCO类将变得混乱.

我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这一难题的最佳方法是什么?

language-agnostic separation-of-concerns solid-principles modular-design

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

Powershell按自定义排序表达式排序

我有一个包含编号目录的目录:

Archive
 |-1
 |-2
 |-3
 |-...
Run Code Online (Sandbox Code Playgroud)

我需要以数字方式创建下一个目录.我正在做的事情

$lastArchive = ls .\Archive | sort Name | select -Last 1
$dirName = '1'
if($lastArchive) {
  $dirName = ([int]$lastArchive.Name)+1
}
Run Code Online (Sandbox Code Playgroud)

这当然是失败的,一旦我们达到10,通过排序规则跟随1而不是9.我需要排序表达式实际上是[int]$_.Name- 我将如何做到这一点?

sorting powershell

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