小编NOt*_*Dev的帖子

为什么Nullable <T>是一个结构?

我想知道为什么它Nullable<T>是一个值类型,如果它被设计为模仿引用类型的行为?我理解GC压力之类的东西,但我不相信 - 如果我们想要int表现得像参考,我们可能会对所有具有真实参考类型的后果感到满意.我没有理由Nullable<T>不仅仅是盒装版本的Tstruct.

作为价值类型:

  1. 它仍然需要装箱和取消装箱,而且,拳击必须与"普通"结构有点不同(将零值无效视为真实null)
  2. 检查null时需要区别对待(简单地完成Equals,没有真正的问题)
  3. 它是可变的,打破了结构应该是不可变的规则(好吧,它在逻辑上是不可变的)
  4. 它需要有特殊的限制来禁止递归 Nullable<Nullable<T>>

不制作Nullable<T>参考类型可以解决这个问题吗?

改写和更新:

我已经修改了我的理由列表,但我的一般问题仍然是开放的:

引用类型如何Nullable<T>比当前值类型实现更糟糕?这只是GC压力和"小的,不可改变的"规则吗?它对我来说仍然很奇怪......

c# clr nullable

24
推荐指数
3
解决办法
2824
查看次数

转义cmd中的特殊字符

我有一个Windows .bat脚本,我尝试在参数中运行带密码的命令.我希望能够使用的密码是~!@#$%^&*()_+|-=\][{}';:"/.>?,<.

从我读过什么在这里,我要逃跑^&|\<>^.从我认为,我应该逃跑"\".

这给了我类似的东西:

runme.exe /password:"~!@#$%^^^&*()_+^|-=^\][{}';:\"/.^>?,^<"
Run Code Online (Sandbox Code Playgroud)

但它不起作用 - 我的目标应用程序响应登录失败.

我应该如何逃避所有这些字符才能在我的批处理中硬编码密码(现在忽略安全问题)?

cmd escaping

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

流利的nhibernate不支持异常newexpression

任何人都可以帮我弄清楚我做错了什么.我是nhibernate的新手,我发现很难真正适应它.我有这个问题:

        var results2 = (from purchase in _session.Query<Purchase>()
                        group purchase by new { purchase.symbol } into purchases
                        select new Quote()
                        {
                            shares= purchases.Sum(p => p.shares)
                        }).ToList();
Run Code Online (Sandbox Code Playgroud)

但我得到notsupportedexception并且错误消息只是newexpression.

nhibernate linq-to-nhibernate

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

具有继承和通用约束的两步方法解析

在使用带继承的泛型约束时,我遇到了一些令人惊讶的事情.我有一个Foo与参数不同的重载方法- 基本或派生类实例.在这两种情况下,它通常只是将实例传递给第二对重载方法 - Bar.

当我Foo使用基类实例调用时,将调用基类的Bar重载.当我Foo使用派生类实例调用时,将调用派生类的Bar重载.这是明确和预期的.

但是当我尝试将Foo方法合并为GenericFoo使用泛型和约束的单一方法时,方法的解析方式也不同 - T被正确解析,但只Bar调用了基类重载.

public class Animal { }
public class Cat : Animal { }

public class AnimalProcessor
{
    public static void Foo(Animal obj)
    {
        Console.WriteLine("Foo(Animal)");
        Bar(obj);
    }

    public static void Foo(Cat obj)
    {
        Console.WriteLine("Foo(Cat)");
        Bar(obj);
    }

    // new generic method to replace the two above
    public static void GenericFoo<T>(T obj)
        where T : Animal
    {
        Console.WriteLine("Foo(generic)");
        Bar(obj); …
Run Code Online (Sandbox Code Playgroud)

c# generics overloading

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

在服务器端管理不断增长的CSS样式表 - 是否有任何库,助手?

当使用ASP.NET(MVC或经典,无关紧要)开发大型应用程序时,特别是在大型团队中,很容易产生大量凌乱,不可跟踪的CSS定义.经过一段时间后,我们最终可能不知道为什么存在特定的定义,考虑到样式继承和跨浏览器的差异,它的实际效果是什么.毋庸置疑,改变这种混乱中的任何事物都是一种风险,并且有数百种方法可以使小变化对系统产生影响.

我知道一些更好地组织CSS样式表的解决方案,比如预定义的CSS"框架"或DotLessCss引擎,但我仍然觉得很难处理CSS,因为HTML标记和CSS样式之间没有这样的关系,比如接口和具体类之间在C#代码中.我知道这是设计使得演示文稿与结构分开,但我相信在开发级别进行这样的对应可能是有用的.

理想情况下,我需要一些可以强制团队不要制作凌乱的CSS或者能够自动清理这些混乱的东西.您是否知道可以帮助我的任何资源,或者任何指导如何轻松管理我的CSS定义?

让我问一些不同的东西:

尽管我有多年的网络经验,但我相信如果我的一些CSS可以转移到C#代码中,我会更有信心,就像MVC HTML Helpers完成一些HTML生成一样.它节省了我编写大量不必要的标记,如果需要仍允许这样做.它更易于单元测试,使用ReSharper等工具更容易重构.

我不需要CSS的合并和压缩器,我希望能够在声明级别管理我的CSS.

也许有一些我不知道的工具,或者这个想法可能是错误的并且不会有用?

css asp.net html-helper

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

自动分析/单元测试NHibernate行为

我使用NHibernate几个月,我发现它非常强大,但对我来说这是一种有时会伤害你的工具.我有很多情况,相对简单的映射更改,在LINQ查询或任何使用我的实体的代码导致意外的行为.我最"壮观的成功"是让N + 1删除和插入的读操作只是因为我在代码中而不是在数据库中对我的组件集合进行排序.

感谢NHProf,我可以跟踪这样的一些问题,但我觉得我无法确定在重构或小的需求更改之后我的数据访问层仍能正确有效地运行.在每次更改后手动测试/分析它是一种痛苦的方式.我会想到这里是一些样的方式来进行单元测试 NHibernate的行为引擎盖下,即会产生什么SQL,多少查询完成后,有多少实体加载,很多表如何加盟等.

我知道它可能有点偏离主要的ORM目的,但对于需要表现良好的应用程序,我认为低级知识比抽象更重要.

是否有任何与此想法相似的实现?如何自动分析我的NHibernate应用程序?

nhibernate profiling unit-testing nhprof

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

为什么NHibernate逐个删除引用的对象,而不是使用外键?

我有简单Parent- Child关系,Parent有很多Child的对象,关系是单向的:

public class Parent
{
    public virtual int Id { get; protected set; }
    public virtual string Name { get; set; }
    public virtual IList<Child> Children { get; set; }
}

public class Child
{
    public virtual int Id { get; protected set; }
    public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

映射关系集级联以AllDeleteOrphan删除Child不再引用的对象Parent:

HasMany(x => x.Children).Cascade.AllDeleteOrphan();
Run Code Online (Sandbox Code Playgroud)

现在我正在清除Child对象列表:

var parent = session.Get<Parent>(1);
parent.Children.Clear();
session.Update(parent); …
Run Code Online (Sandbox Code Playgroud)

nhibernate performance one-to-many

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

IDictionary <K,IEnumerable/IList/ICollection <V >>上的单一扩展方法

我正在尝试编写一个扩展方法,该方法将转换IDictionary<K, S<V>>保存任何类型的collection/sequence(S<V>),ILookup<K, V>在这些情况下,这是更合适的数据结构.这意味着我希望我的扩展能够在不同的S类型和接口上工作:

  • IDictionary<K, IEnumerable<V>>
  • IDictionary<K, ICollection<V>>
  • IDictionary<K, List<V>>

理想情况下,我不想为每种可能的集合类型编写单独的实现,并且我希望类型推断能够完成它的工作.

我试过的是:

public static ILookup<TKey, TValue>ToLookup<TKey, TCollection, TValue>(
    this IDictionary<TKey, TCollection> dictionary)
        where TCollection : IEnumerable<TValue>
Run Code Online (Sandbox Code Playgroud)

但它没有TValue参数列表,所以类型推断无法弄明白 - 我得到"方法ToLookup的类型参数不能从用法推断".

是否有可能以某种方式以某种方式工作,而不是在方法中添加假的TValue参数?

预期用途的示例

我希望所有上述调用都成为可能,并导致调用我的单个扩展方法:

var dictOfIEnumerables = new Dictionary<int, IEnumerable<int>>();
var lookupFromIEnumerables = dictOfIEnumerables.ToLookup();

var dictOfICollections = new Dictionary<int, ICollection<int>>();
var lookupFromICollections = dictOfICollections.ToLookup();

var dictOfLists = new Dictionary<int, List<int>>();
var lookupFromLists = dictOfLists.ToLookup();
Run Code Online (Sandbox Code Playgroud)

c# generics extension-methods covariance generic-variance

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

是否有任何视图助手来生成CSS?

我喜欢HTML助手的想法,它允许我不为常见元素编写所有HTML,同时仍然让我完全控制,保留模型 - 视图分离并且可以强类型化.

我想知道是否有可能以相同的方式生成CSS样式表或样式定义 - 在视图标记中使用帮助程序?理想情况下,我希望根据一些面向对象的规则和定义生成一些CSS.

我找不到任何能提供样式表压缩和合并的解决方案.

css asp.net-mvc helpers

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

显示302 Redirect - 或HTTP兼容等待屏幕的内容

我希望在用户进入网站之前在HTML中绘制一个等待屏幕,因为一些长时间运行的auth进程是我无法控制的.我希望该屏幕完全符合HTTP标准,即:

  • 200 OK如果没有可用的实际内容,则不应该响应(这消除了显示带有加载指示符的空页占位符并在后台使用AJAX调用加载内容的选项)
  • 它应该响应,302 Redirect如果实际上有任何重定向(这消除了HTML的元刷新功能).

我能看到的唯一"第三种方式"是依靠标准的302重定向.但是我需要请求的实际内容,导致302响应在等待第二个请求时呈现给用户("请等待"信息或其他内容).在大多数(所有?)情况下,浏览器不会绘制这些请求的内容,只是等待重定向数据.

问题是:

  1. 在什么情况下呈现302重定向请求的内容?是否有可能强制浏览器在重定向之前呈现它?
  2. 是否有另一种方法来解决问题而不破坏HTTP协议?或者是200 OK没有任何内容最初没有违反协议的页面的状态?

html redirect http

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