小编Mat*_*ell的帖子

Visual Studio 2015:禁用Control +单击导航

升级到Visual Studio 2015后,在单击符号时按住控件会导航到该符号定义.在先前版本中,这将改为选择整个单词.

如何在控制+单击(单击)符号时禁用导航事件,以便突出显示该单词?

我确实安装了Resharper(Ultimate 9.2).Environment -> Search & Navigation -> Go to Declaration on Control + Click in the editor未选中下面的配置选项.

所有搜索引擎结果都提到这是Visual Studio早期版本中Productivity Power Tools扩展的一个功能.我没有安装该扩展程序.

resharper visual-studio visual-studio-2015

26
推荐指数
3
解决办法
8254
查看次数

如果作业中的任何步骤失败,请通知操作员

如果作业中的任何步骤失败,我可以(如何)配置Sql Server 2008以通知操作员?

我有一个Sql Server作业,有几个步骤来更新来自多个不同来源的数据,然后是一个最后一步,对数据执行多次计算.所有"数据刷新"步骤都设置为"失败时转到下一步".一般来说,如果其中一个数据刷新失败,我仍然希望最后一步运行,但我仍然希望收到关于中间故障的通知,所以如果它们一直失败,我可以调查.

sql-server notifications sql-server-agent database-administration server-administration

14
推荐指数
3
解决办法
2万
查看次数

合并数据注释属性

我有一些属性的集合,这些属性应该总是一起用于UI和验证.例如,对于货币字段,我必须添加UI提示,验证逻辑和显示格式.结果,我的班级看起来非常拥挤.

public class Model
{
    [UIHint("Currency")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:C}")]
    [CustomRegularExpression(Currency.ValidationPattern, OnlyOnClientSide = true)]
    [SetMetaDataForCustomModelBinder("Currency")]
    public double? Cost { get; set; }

    [UIHint("Currency")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:C}")]
    [CustomRegularExpression(Currency.ValidationPattern, OnlyOnClientSide = true)]
    [SetMetaDataForCustomModelBinder("Currency")]
    public double? Profit { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法创建一个[Currency]属性,将所有这些属性的功能组合成一个简单的属性?我的目标是创建以下内容:

public class Model
{
    [Currency] public double? Cost { get; set; }
    [Currency] public double? Profit { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

编辑:为了澄清,我已经尝试创建自定义属性,但没有暴露的接口允许我实现这些不同属性的功能.我可以继承ValidationAttribute,但是我也不能将UIHintAttribute子类化.我缺少任何其他潜在的解决方案?

validation asp.net-mvc

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

从web.config中膨胀时,SmtpClient不会进行身份验证

使用system.net/mail web.config设置配置我的SmtpClient时,它无法发送电子邮件,其中"协议错误"最好由Base64编码和身份验证问题描述:

示例:
使用以下配置

<system.net>
    <mailSettings>
        <smtp from="email@server.com">
            <network host="servermail.outsourced.com"
                     port="2525" 
                     defaultCredentials="false" 
                     userName="username" 
                     password="password"/>
        </smtp>
    </mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

和守则:

var tmp = new SmtpClient();

MailMessage msg = new MailMessage();
msg.Subject = "test";
msg.From = new MailAddress("me@server.com");
msg.To.Add(new MailAddress("me@server.com"));
msg.Body = "test";
tmp.Send(msg);
Run Code Online (Sandbox Code Playgroud)

生成错误消息:

System.Net.Mail.SmtpException: The server committed a protocol violation The server response was: UGFzc3dvcmQ6
   at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
   at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException
& exception)
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
Run Code Online (Sandbox Code Playgroud)

但是,在下面的代码中,我手动设置了所有属性,代码运行无例外,并且已发送电子邮件.

var tmp2 = new SmtpClient("servermail.outsourced.com", 2525);
tmp2.Credentials …
Run Code Online (Sandbox Code Playgroud)

asp.net smtpclient

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

Subclassing List <T>不保留列表功能

我创建了一个通用列表的子类,以便我可以实现一个新的接口

public class CustomersCollection : List<Customer>, IEnumerable<SqlDataRecord>
{
...
}
Run Code Online (Sandbox Code Playgroud)

当我将字段定义更改为新类时(请参阅下面的旧行和新行的示例),我会在原始列表中应该存在的内容上获得各种编译错误.

public CustomersCollection Customers { get; set; } 
public void Sample()
{
    Console.WriteLine(Customers.Where(x=>x.condition).First().ToString());
}
Run Code Online (Sandbox Code Playgroud)

为什么CustomersCollection不继承List的IQueryable,IEnumerable接口实现?

官方错误是:

'CustomersCollection'不包含'Where'的定义,也没有扩展方法'Where'可以找到接受'CustomersCollection'类型的第一个参数(你是否缺少using指令或汇编引用?)


事实证明,IEnumerable的自定义实现会导致适用于IEnumerable的所有扩展方法失败.这里发生了什么?

c# inheritance

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

你如何覆盖Html.ActionLink?

通常我会想要使用数据库中的内容呈现ActionLink(想象一下Id/Name组合),所以我将把以下内容放在我的视图中:

        @foreach (var row in Model)
        {
            <li>@Html.ActionLink(row.Name, "Action", "Controller", new { id = row.Id })</li>
        }
Run Code Online (Sandbox Code Playgroud)

但是,如果Name是空字符串,则会引发异常.有什么办法可以防止这种情况发生.我想覆盖ActionLink,但它是一个扩展,所以我无法覆盖.

有什么建议?

编辑:

首先,我不控制数据,或者我会确保名称字段是必需的并且始终填充.不幸的是,这种情况并非如此.

其次,我意识到用户没有任何东西可以点击,但我相信渲染空链接比给他们YSOD更好.

asp.net-mvc

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

用于服务器到服务器通信的 SignalR

我有一个负载平衡的 Web 应用程序,它已经使用 SignalR 来处理一些服务器到客户端的推送通知。

我可以利用 SignalR 的背板提供服务器到服务器的通信吗?我希望在所有服务器上调用某些方法,并且可以通过来自任何一台服务器的 Web 请求来请求此过程。一个例子是使缓存条目无效。

asp.net-mvc signalr

5
推荐指数
0
解决办法
2673
查看次数

C++/CUDA中有3个尖括号(<<<)的模板化方法是什么?

原谅可能是一个简单的问题,我的C++生锈了.我正在使用CUD中的机器学习应用程序,它使用CUDA进行一些计算,我发现了以下代码行.

只是好奇如何解析这个.它看起来像一个模板化的方法,但我不理解三角括号'<<<'.这里发生了什么?

backward_scale_kernel<<<n, BLOCK>>>(x_norm, delta, batch, n, size, scale_updates);
Run Code Online (Sandbox Code Playgroud)

对于上下文,"n"作为函数参数传入,我找不到BLOCK的定义或分配位置.

c++ syntax cuda

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

通用协方差和转换为SuperType

我有一个OO问题,我认为可以与Generic Covariance联系起来.我想建立一个模块化系统导入不同类型的记录...模块包含了常用的方法,以及SalesModule包含用于处理特定的逻辑功能...

public interface IImportable { ... void BuildSqlDataRecord(); ...  }
public class Sales : IImportable { ... }
public interface IModule<out T> where T : IImportable
{
    void Import(IEnumerable<T> list);  // Error Occurs here...
    IEnumerable<T> LoadFromTextFile(TextReader sr);
}
public abstract class Module<T> : IModule<T> where T : IImportable
{ 
    public void Import(IEnumerable<T> list) { ... T.BuildSqlDataRecord(); ... } 
    public IEnumerable<T> LoadFromTextFile(TextReader sr) { ... }
}
public class SalesModule : Module<Sales>
{
    public override void BuildSqlDataRecord() { ... }; …
Run Code Online (Sandbox Code Playgroud)

c# generics

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

什么时候提交NHibernate Transaction?

虽然对Webforms和Linq非常熟悉,但我是ASP.NET MVC和NHibernate World的新手.我一直在使用Bob Cravens的例子来完成一个项目.我的应用程序主要是读取和非顺序写入,因此通常我不会使用事务.但是为了实现工作单元模式,包括Ayende博客在内所有研究都说我应该这样做.

我遇到的问题是 -

  • Ninject创建会话并打开交易.
  • Ninject将存储库注入服务,将服务注入控制器.
  • 我对对象的属性和子进行了一些更改并保存在聚合根上.这会调用Transaction.Commit(正常工作,如预期的那样)
  • 在稍后在控制器中的另一种方法中,我尝试保存单独的对象
  • 第二次调用失败,因为事务不再处于活动状态.

我正在考虑向UnitOfWork添加一个bool"CommitNeeded",它将由我的Save()方法设置并有条件地触发UnitOfWork.Dispose()上的Commit().这是一个好主意吗?

我应该删除交易基础设施吗?我应该将Commit()改为Flush()吗?

任何有助于修复我的反模式的建议都将受到赞赏.


在回应评论时 - 我想我不介意它们是一起发生还是分开发生.有两件事情在发生.第一个更改"客户"对象,然后保存它.第二个创建一个日志记录条目,然后调用相同的"保存"方法.

var Customer = ServiceLayer.GetCustomer(...);
Transmogrify(Customer, Customer.Children, Widgets, ...);
ServiceLayer.Save(Customer)

ServiceLayer.RecordEvent(Customer, "Customer was frobbed")
Run Code Online (Sandbox Code Playgroud)

LogEvent的样子

public void RecordEvent(Customer customer, int eventTypeId, string description)
{
    ...

    Save(customer);
}
Run Code Online (Sandbox Code Playgroud)

RecordEvent方法有自己的"保存",因为它是从没有数据更改的其他控制器调用的.我相信保存电话不属于这两个地方.问题是,在哪里?服务层的Dispose()方法?或像其他用户建议的过滤器?

nhibernate asp.net-mvc dependency-injection transactions

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