我需要检查一个DateTime值是否有值.
我有几个选择:
if (dateTime == default(DateTime))
Run Code Online (Sandbox Code Playgroud)
要么
if (dateTime == DateTime.MinValue)
Run Code Online (Sandbox Code Playgroud)
或使用可空的 DateTime?
if (nullableDateTime.HasValue)
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢第三个版本,因为它的可读性非常好.但是在我们的数据库中,我们有一些datetime列,它们被定义为非null.所以在某些情况下我必须选择前两个选项.
我在某处读到了在default使用泛型时应该使用该关键字,但在这种情况下它是否更具可读性?当使用第二个选项时,我必须知道新的和空的DateTime实例的默认值是DateTime.MinValue,它具有我的实现细节的气味.
那么我应该使用哪个选项来使用"最佳实践"?
使用硒对我们的项目进行ui测试.我们正在运行最新版本2.30.0.我们使用Firefox WebDriver并运行Firefox 19.0.
一般来说,当我在Visual Studio中运行ui测试时,ui测试在本地甚至服务器端工作.我们的ui测试在我们的构建服务器上得到了很好的执行.它在我通过Visual Studio手动测试的同一台服务器上使用相同的部署.
但是偶尔我们在构建服务器上执行ui测试时会遇到以下问题:
Test(s) failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:7056/hub/session/bed1d0e7-efdc-46b6-ba07-34903519c44d/element/%7B8717bb19-96c7-44d3-b0ee-d4b989ae652d%7D/click timed out after 60 seconds.
----> System.Net.WebException : The operation has timed out
at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
--WebException
at System.Net.HttpWebRequest.GetResponse()
at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
Run Code Online (Sandbox Code Playgroud)
基本上,测试点击上传按钮,其中输入字段之前填充了文件.由于文件非常小,因此可在几秒钟内完成.然而,有时达到60秒的时间.
任何想法如何隔离潜在的问题?或者之前让任何人遇到同样的问题?任何提示赞赏.谢谢.
我试图通过NLog MailTarget登录.它运行得很好,但我想用mail BufferedTargetWrapper缓冲日志消息包装mailtarget,直到预定义的代码点,我想手动刷新缓冲区并通过单个邮件发送当前缓冲的日志消息(如邮件目标中定义的那样) ).
如果我定义FlushTimeout或BufferSize在的BufferedTargetWrapper一切,应该还是工作得很好.但是如果没有设置FlushTimeout和BufferSize,我就无法使它工作.
就像在SO Force BufferingTargetWrapper上的这个问题中回答的那样,我没有这样的东西:
LogManager.Configuration.AllTargets.Where(t => t != null && t is BufferingTargetWrapper).ToList().
ForEach(b => ((BufferingTargetWrapper)b).Flush(null));
Run Code Online (Sandbox Code Playgroud)
但是文档和这个答案与我的NLog版本(2.0.0.2000)相矛盾.没有参数的flush方法,只有异步目标的flush方法.
有没有办法强制BufferingTargetWrapper将所有记录的消息刷新到包装目标(通过邮件发送)?
我们第一次使用Kendo UI DropDownList而没有敲除绑定.通过jquery,通常的html输入被转换为KendoUI DropDownList.但是如何删除/编辑/添加选项?
如果我通过jquery修改html输入选项,它对kendoui下拉列表没有影响 - 即使之后有刷新调用.
任何想法如何做到这一点?谢谢
如何使用简单的正则表达式或其他东西通过用户代理检测iOS 6和所有次要版本?也很好区分iphone和ipad.
这个问题与什么是iOS 6用户代理字符串不同?因为我想根据我已经知道的信息(可以在链接的问题中找到)帮助构建正则表达式
在我们的项目中成功使用实体框架迁移.但是现在我遇到了一个特殊情况,我需要更新一个需要一些业务逻辑的表(在我们的应用程序中作为C#代码).因此,我尝试在迁移Up方法中生成一个线程,并使用业务逻辑执行此表更新.应用程序执行不需要此表更新,应在后台进行.
我这样做有点像这样:
public partial class MyMigration : DbMigration
{
public override void Up()
{
// ... do some sql migration here ...
// after executing the sql migrations custommethod should run
// migration seems to wait until CustomMethod finished work
new Thread(() => ExecuteCustomMethodDatabaseContext()).Start();
}
}
Run Code Online (Sandbox Code Playgroud)
我希望该Up方法在启动线程后返回,EF将MigrationHistory中的迁移设置为完成.因此,应用程序可以启动,并在后台的某个地方更新表.
但事实并非如此,迁移似乎在线程运行时运行(这需要很多时间).
所以我的问题是:
我尝试将多个项目序列化为json,并将其格式化为数组。
它是基于事件的,因为它的大量数据无法作为一个整体收集在内存中。但是我需要将每个项目序列化为一个文件,并将其格式化为数组。
_jsonWriter = new JsonTextWriter(new StreamWriter("Output.json")));
DataGatherer.ItemGathered += item =>
{
_jsonSerializer.Serialize(_jsonWriter, item);
_jsonWriter.Flush();
};
Run Code Online (Sandbox Code Playgroud)
当前,此输出如下:
{
"Id": 218515,
"Name": "A"
}{
"Id": 118647,
"Name": "B"
}
Run Code Online (Sandbox Code Playgroud)
由于序列化程序将每个项目序列化为一个对象,因此不知道其数组。
因此,我如何告诉JSON.Net序列化程序将每个项目作为数组的一个项目进行处理,并格式化数据,如下所示:
[{ "Id": 218515, "Name": "A"},{"Id": 118647,"Name": "B"}]
Run Code Online (Sandbox Code Playgroud)
感谢您的提示!
在我们的ASP.NET MVC项目中,我们使用Ninject来解析控制器所需的依赖项.
其中一个依赖项是当前用户HttpContext.Current.User.Identity.如果用户经过身份验证,我们希望实例化一个用户对象和几个依赖它的服务.但我们不想手动执行此操作,而是让ninject将这些实例注入控制器.
所以我们现在遇到了麻烦,因为当然可以找到一个url而不进行身份验证.然后ninject尝试在asp.net重定向到登录页面之前解析实例.
我可以想到解决方案,我们配置ninject只是在用户通过身份验证时注入:
kernel.Bind<User>().ToMethod(GetUser).When(context => HttpContext.Current.User.Identity.IsAuthenticated).InRequestScope();
Run Code Online (Sandbox Code Playgroud)
这里的问题是,即使用户未经过身份验证,ninject也会实例化一个默认对象,因此无论如何我的服务都会崩溃或需要检查实例.空检查会让我更容易接受,但我不想激活AllowNullInjectionNinject的设置.
所以我的问题是做有条件的事情的最佳做法是什么?我可以在这些情况下使用Ninject功能,还是不应该注入这些依赖项?
最近我使用外部DLL库,我对它没有任何影响.在某些特殊情况下,此第三方dll的方法是阻塞并且永不返回.
我试图通过在新的AppDomain中执行此方法来解决此问题.在自定义超时后,我想卸载AppDomain并杀死所有这些垃圾;)
不幸的是,它不起作用 - 正如有人所期望的那样.
一段时间后,它会抛出CannotUnloadAppDomainException,因为阻塞方法不允许正常中止线程.
我依赖于使用这个库,似乎不会很快有更新.
那么我可以解决这个问题,即使这不是最佳做法吗?任何糟糕的黑客赞赏:)