小编Bor*_*itz的帖子

事件Action <> vs event EventHandler <>

声明event Action<>和声明之间有什么不同吗event EventHandler<>

假设实际引发事件的对象无关紧要.

例如:

public event Action<bool, int, Blah> DiagnosticsEvent;
Run Code Online (Sandbox Code Playgroud)

VS

public event EventHandler<DiagnosticsArgs> DiagnosticsEvent;

class DiagnosticsArgs : EventArgs
{
    public DiagnosticsArgs(bool b, int i, Blah bl)
    {...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

两种情况下的使用情况几乎相同:

obj.DiagnosticsEvent += HandleDiagnosticsEvent;
Run Code Online (Sandbox Code Playgroud)

关于event EventHandler<>模式,有几件我不喜欢的事情:

  • 从EventArgs派生的额外类型声明
  • 强制传递对象来源 - 通常无人问津

更多代码意味着维护更多代码而没有任何明显的优势.

结果,我更喜欢 event Action<>

但是,只有在Action <>中有太多类型参数时,才需要额外的类.

c#

132
推荐指数
7
解决办法
9万
查看次数

实体框架6中的CreatedOn列

升级到Entity Framework 6后,我们实现了自己的DbExecutionStrategy.除了现有的SqlAzureExecutionStrategy,我们的策略还会记录异常.事实证明,每15-30分钟实体框架抛出内部SqlException System.Data.SqlClient.SqlException (0x80131904): Invalid column name 'CreatedOn'. 这是一个内部错误.如果某些表上存在CreatedOn列,EF似乎会进行一些定期检查.是否有任何优雅的方法来防止抛出此异常?

这是一个调用堆栈:

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, ref Boolean dataReady)
   at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, ref Task task, Boolean asyncWrite, SqlDataReader ds)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework azure-sql-database

22
推荐指数
2
解决办法
6568
查看次数

什么是ASP.NET 5类库(包)中的.NET Platform 5.4?

我在基于ASP.NET 5的解决方案中添加了一个新的类库(包).我在它的project.json中注意到.NET Platform 5.4部分:

"frameworks": {
    "net451": {
          "dependencies": {}
    },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

它是为了什么?为什么它与ASP.NET Web项目不同?

asp.net asp.net-core

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

在Perforce中重命名文件?

每次我在Perforce中重命名文件时,它实际上会删除一个旧文件并添加一个新文件.因此,新文件不会共享旧文件的历史记录.这样做有简单的方法吗?

perforce

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

Plinq语句在静态构造函数中陷入僵局

我遇到了这种情况,其中静态构造函数中的以下plinq语句被死锁:

static void Main(string[] args)
{
    new Blah();
}

class Blah
{
     static Blah()
     {
         Enumerable.Range(1, 10000)
            .AsParallel()
            .Select(n => n * 3)
            .ToList();
     }
}
Run Code Online (Sandbox Code Playgroud)

它仅在构造函数是静态时发生.请有人向我解释一下.

是TPL错误吗?编译器?我?

.net c# plinq task-parallel-library

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

如何将NUnit属性应用于程序集

根据文档,您可以将NUnit超时属性应用于程序集:

该属性也可以在fixture或程序集上指定,在这种情况下,它指示任何从属测试用例的默认超时.

我遇到的挑战是,他们没有说明如何将该属性应用于该页面上的程序集或我在文档中可以找到的任何其他位置.

我尝试使用[SetupFixture]和装饰属性,但似乎没有采取.有没有人在制作类似这样的作品方面取得任何成功?

c# nunit unit-testing

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

Azure Functions .NET Core中的EF Core 2.0连接字符串

我使用.net核心在Azure Functions中使用EF core 2.0.我正在尝试从local.settings.json读取db ConnectionString,其定义如下:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "MyDbConnStr": "Data Source=.;Initial Catalog=xxxxxxx"
  }
}
Run Code Online (Sandbox Code Playgroud)

Environment.GetEnvironmentVariable()不返回任何连接字符串信息,我也不能使用带有.net核心的ConfigurationManager.ConnectionStrings.如何从代码中访问连接字符串?

c# azure entity-framework-core azure-functions ef-core-2.0

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

在 VSTS 中添加 Azure 订阅作为任务组的参数

我正在尝试从几个任务中创建一个任务组,这些任务将一些应用程序部署到 Azure AppService 中等等。我的想法是使用这个 Task Group 来部署到不同的环境中(即 Dev、QA、UAT、Prod)。但是,我无法将 Azure 订阅转换为变量,该变量当前是进程参数。有解决办法吗?

azure azure-devops azure-pipelines-release-pipeline

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

Ping WCF服务

检查WCF服务是否可用的最有效方法是什么.(Ping)它假设是绑定配置独立的.

我不想用IsAlive()方法修改服务合同.理想情况下,我希望WCF框架支持它.否则,我们的解决方案是通过添加"ServiceAdministration"服务来完成的,该服务托管在与上述服务相同的过程中.ServiceAdministration引用了ServiceHost,它可以检查其状态.

wcf

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

WPF DataGrid中的自定义StringFormat

在DataGrid中设置列的自定义格式的最有效方法是什么?我不能使用以下StringFormat,因为我复杂的格式也依赖于此ViewModel的其他一些属性.(例如,价格格式有一些基于不同市场的复杂格式逻辑.)

Binding ="{Binding Price, StringFormat='{}{0:#,##0.0##}'}"
Run Code Online (Sandbox Code Playgroud)

c# wpf datagrid

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