小编Dmy*_*tro的帖子

做危险的事情,如果失败,试着修复它并再做一次.如果仍然失败,请放弃

我正在寻找好的形式

if (! write_to_file($data) )
{
    open_this_file($file_name)
    write_to_file($data) or die "Cant write to $file_name" ;
}
Run Code Online (Sandbox Code Playgroud)

它看起来很不清楚,不是吗?怎么写它自我解释?

perl

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

如何使用TechTalk.SpecFlow和C#以编程方式验证测试失败?

我想在属性标记类的[AfterTestRun]测试失败后执行属性标记方法[Binding].我怎样才能实现以下目标:

[Binding]
public class TestsRunner
{
   [AfterTestFails] // There is no such attribute
   public static void DoStuff()
   {

   }
}
Run Code Online (Sandbox Code Playgroud)

要么

[Binding]
public class TestsRunner
{
   [AfterTestRun]
   public static void DoStuff()
   {
        if(ScenarioContext.Current.TestHasFailed) // There is no such property
        {
            // Do stuff
        }  
   }
}
Run Code Online (Sandbox Code Playgroud)

c# acceptance-testing specflow

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

如何在作业执行期间将数据保存到JobDataMap,然后再访问?

我目前正在Quartz.net上进行某种简化的包装,以便能够管理所有在后台作业中注册和运行的程序,显示有关作业执行进度,百分比的其他信息,返回有关当前作业状态的某种消息等。例如,如果我当前的工作是将数据发布到社交媒体上,我想查看当前数据发布到哪个社交媒体上,或者如果工作正在发送电子邮件,我想实时查看当前生成了多少电子邮件,如何已经发送了很多,还剩下多少,等等。为此,我将数据保存到IJobExecutionContext (context.JobDetail.JobDataMap)作业Execute方法中。然后使用我的经理获取当前执行的所有作业:

public List<IJobExecutionContext> RunningJobs
{
     get { return Scheduler.GetCurrentlyExecutingJobs().ToList(); }
}
Run Code Online (Sandbox Code Playgroud)

和显示从细节提取JobDataMap每个的IJobExecutionContext。这样还行。但是问题是,例如,如果作业执行失败,我想在中记录(保存)尽可能多的数据,包括异常对象本身JobDataMap。但是,问题是,当作业执行完成时,将放置上下文对象。我丢失了所有这些数据。因此,当我尝试获取当前计划作业的所有JobDetail时:

public List<IJobDetail> AllJobs
{
     get
     {
         var result = new List<IJobDetail>();
         var jobGroups = Scheduler.GetJobGroupNames();

         foreach(string group in jobGroups)
         {
            var groupMatcher = GroupMatcher<JobKey>.GroupContains(group);
            var jobKeys = Scheduler.GetJobKeys(groupMatcher);

            foreach(var jobKey in jobKeys)
            {
                var detail = Scheduler.GetJobDetail(jobKey);
                result.Add(detail);
            }
         }

         return result;
     }
}
Run Code Online (Sandbox Code Playgroud)

我看不到作业执行期间保存到的数据detail.JobDataMap但是我仍然可以看到在作业实际执行之前初始化/计划作业时保存的数据。作为一种选择,我可以在执行期间(实际上是在执行中)捕获该异常的日志,但是我想将该作业标记为失败并在“作业”详细信息视图中显示失败的原因。它使用List<IJobDetail> AllJobs(在上面实现)从我的经理那里获取数据(就像我的工作的某种存储库)。

因此,我是否必须使用某种附加的作业详细信息存储来在执行期间保存此数据,然后获取所有计划的作业并按作业ID或其他内容映射此数据。这不是我想要的解决方案。还是实际上有一种在执行时将数据保存到JobDataMap并在执行后访问此数据的方法?

c# quartz-scheduler quartz.net

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

如何知道实体框架中数据库的物理大小?

是否可以*.mdf仅使用Entity Framework类的方法或属性来知道代码首先创建的数据库物理文件大小(以字节为单位)?如果可能的话,该怎么做?

c# database entity-framework code-first

0
推荐指数
1
解决办法
2163
查看次数

如何根据 Razor 中的某些条件向 div 元素添加一些类?

我对 Razor 语法很困惑)))例如我有一个元素:

<div class="category-block">

</div>
Run Code Online (Sandbox Code Playgroud)

我有一个参数

string viewMode = Html.ViewContext.HttpContext.Request.QueryString["view"];

我需要使用 class 将list-blockclass 添加到我的 div 元素category-block并获取

<div class="category-block list-block">

</div>
Run Code Online (Sandbox Code Playgroud)

如果

viewMode != null && viewMode.Equals("list", StringComparison.OrdinalIgnoreCase)

我尝试做类似的事情:

<div class="category-block @(viewMode != null && viewMode.Equals("list", StringComparison.OrdinalIgnoreCase)) ? list-block : string.Empty ">
Run Code Online (Sandbox Code Playgroud)

但每次我都会遇到很多语法错误...我不知道是否可以在打开的属性括号内写一些东西;

c# razor asp.net-mvc-3

-1
推荐指数
1
解决办法
1298
查看次数