小编Bre*_*tin的帖子

C#包含值类型和字符串的通用约束

我正在尝试在IEnumerable上编写一个扩展方法,它只适用于值类型和字符串.

public static string MyMethod<T>(this IEnumerable<T> source) where T : struct, string
Run Code Online (Sandbox Code Playgroud)

但是'string'不是有效的约束,因为它是一个密封的类.

有没有办法做到这一点?

编辑:

我实际上要做的是为动态构造的SQL中的"IN"子句准备一个值列表.

我有很多代码实例,例如以下我要清理的代码:

sb.AppendLine(string.Format("AND value IN ({0})", string.Join(",", Values.Select(x => x.ToSQL()).ToArray())));
Run Code Online (Sandbox Code Playgroud)

ToSQL()具有处理SqlInjection的代码.

c# string generics constraints value-type

44
推荐指数
4
解决办法
3万
查看次数

查找"未知提供程序"错误的原因

我收到以下错误:

Error: [$injector:unpr] Unknown provider: nProvider <- n
Run Code Online (Sandbox Code Playgroud)

我知道这是由缩小过程引起的,我理解为什么.但是,是否有一种简单的方法可以确定哪个文件实际导致了问题?

minify angularjs

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

不引人注目的淘汰赛

我最近加快了Knockout的速度,我认为这是一个很棒的框架.但是我有一个问题.

我发现在非平凡的绑定案例中,我有javascript代码片段爬进我的视图(标记).事实上,Knockout文档中的不少代码示例也证明了这一点.

这是否会使Knockout本身具有突兀性?

我应该接受它是什么而不是在实践中担心?

或者我是否应该使用任何模式/技术来使Knockout不引人注目?

javascript unobtrusive-javascript knockout.js

34
推荐指数
3
解决办法
3255
查看次数

类型'Company.Model.User'和类型'Company.Core.Model.User'都具有相同的简单名称'User',因此不能在同一模型中使用

我有一个基本实体类MyCompany.Core.Model.User,用于User实体的公共属性:

public class User
{
    public string Username { get; set; }
    public string Usercode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我还有一个基本映射类MyCompany.Core.Model.UserMap来为基类设置代码的第一个映射User:

public class UserMap<TUser> : EntityMapBase<TUser>
    where TUser : User
{
    public UserMap()
    {
        // Primary Key
        this.HasKey(t => t.Usercode);

        // Table & Column Mappings
        this.ToTable("Users");
        this.Property(t => t.Username).HasColumnName("Username");
        this.Property(t => t.Usercode).HasColumnName("UserCode");
    }
}
Run Code Online (Sandbox Code Playgroud)

在一个单独的程序集中,我有一个派生类MyCompany.Model.User,User它继承自基类并使用一些其他属性扩展它:

public class User : Core.User
{
    public string Surname { get; set; } …
Run Code Online (Sandbox Code Playgroud)

inheritance entity entity-framework ef-code-first entity-framework-6

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

在IE中返回"未知"的类型

我有一个窗口,在关闭之前我刷新底层页面.

if(opener && typeof(opener.Refresh) != 'undefined')
{
    opener.Refresh();
}
Run Code Online (Sandbox Code Playgroud)

如果我离开原始的开始页面,此代码将抛出"权限被拒绝"错误.

调试代码显示typeof(opener.Refresh)等于"未知"而不是预期的"未定义".

据我所知,"未知"不是其中一个返回值typeof,那么该值的返回方式和原因是什么?

更多的信息

我通过将检查更改为以下来避免错误:

if(opener && typeof(opener.Refresh) == 'function')
Run Code Online (Sandbox Code Playgroud)

但是这样的例子(在javascript中检测未定义的对象属性)似乎并未将"未知"因素纳入等式中.

javascript internet-explorer typeof

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

Web Essentials - 捆绑版本

我目前正在使用Visual Studio Web Essentials来捆绑和缩小我的CSS和JavaScript文件.

目前,我手动创建一个版本号的包(如mybundle-1.0.0.css时被推到生产,以避免缓存问题).每次对源进行更改时,我还必须手动更改软件包文件版本号.

Web Essentials捆绑中是否存在我可能忽略的任何类型的自动版本控制功能?

理想的工作流程是:

  1. 开发人员更新源文件.
  2. Web essentials自动更新包.
  3. Web essentials会自动增加文件名中的版本号.

这可能吗?

如果没有,我很乐意听到有关更好的开发人员工作流程的任何建议.

visual-studio-2012 bundling-and-minification web-essentials

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

Durandal和ASP.NET MVC约定

我目前正在评估Durandal在企业ASP.NET MVC应用程序中的使用.

但是,Durandal使用的默认约定似乎与我习以为常的MVC约定相冲突.

John Papa的HotTowel MVC模板非常棒,但是这也似乎通过将内容放在App文件夹中来"消除"MVC惯例而转向Durandals.

我对这些约定的几个问题是:

  • 视图可能分为两个位置(/ App/views和/ Views).
  • 脚本也分为两个位置(/ App/durandal和/ Scripts).
  • 视图不在默认的MVC位置RazorViewEngine.

我宁愿保持每个元素包含在适当的MVC约定中,例如

/Controllers/
---- HomeController
---- AdminController

/Scripts/    
---- durandal/    
---- viewmodels/    
-------- Home
-------- Admin

/Views/    
---- Home    
---- Admin
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 是否可以配置Durandal来实现上述(或类似的)?

  2. 冒险脱离默认的Durandal惯例是否明智?

  3. 这样做有什么潜在的问题?

architecture asp.net-mvc conventions durandal hottowel

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

Chrome 50更改隐式表格单元格高度行为

jsFiddle.

<table>
  <tr>
    <td>
      <div>
        Hello World
      </div>
    </td>
  </tr>
</table>

html, body {
  height:100%;
  background-color:steelblue;
  margin:0;
}

table {
  height:100%;
  border:1px;
}

td {
  border:1px;
}

tr {
  background-color: green;
}

div {
  background-color:salmon;
  height:100%;
}
Run Code Online (Sandbox Code Playgroud)

在Chrome 50之前,高度为100%的表格也会隐式将高度100%应用于其表格单元格.

这是Firefox和IE版本<11 中长期存在的错误 .Chrome和Safari总是将隐含的百分比高度传递给单元格.

根据规格,正确的行为是什么?这是由设计引入的吗?

编辑: Chromium Bug报告

html css google-chrome chromium

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

将CONTEXT_INFO转换为varchar以及生成的长度

我正在尝试将用户CONTEXT_INFO代码从存储过程传递到DELETE触发器以进行表审计.

一切正常,但是我注意到审计表中保存的用户代码的长度不正确.

以此脚本为例......

declare @userCode varchar(50)
set @userCode = 'TestUser'

declare @binary_userCode varbinary(128)
set @binary_userCode = cast(@userCode as varbinary(128))
set CONTEXT_INFO @binary_userCode

declare @temp_userCode varchar(50)
set @temp_userCode = (select cast(CONTEXT_INFO() as varchar(50)))

--set @temp_userCode = rtrim(ltrim(@temp_userCode))

select @userCode, len(@userCode), @temp_userCode, len(@temp_userCode)

set CONTEXT_INFO 0x
Run Code Online (Sandbox Code Playgroud)

结果:

len(@userCode)= 8

len(@temp_userCode)= 50

为什么@temp_userCode变量的长度为50,如何将其修剪回原始长度以正确存储?

更多的信息:

运行SQL Server 2005,但该解决方案需要在2005年以后的所有版本中运行.

sql-server varchar sql-server-2005 varbinary context-info

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

命名Angular指令(ng- vs data-ng-)

标记Angular指令的推荐做法是什么?

除了html验证之外,使用" data-" 为内置和我自己的自定义指令添加前缀还有其他好处吗?

还是不必要的混乱?

angularjs angularjs-directive

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