小编Bry*_*tts的帖子

为什么C#禁止通用属性类型?

这会导致编译时异常:

public sealed class ValidatesAttribute<T> : Attribute
{

}

[Validates<string>]
public static class StringValidation
{

}
Run Code Online (Sandbox Code Playgroud)

我意识到C#不支持通用属性.然而,经过大量的谷歌搜索,我似乎无法找到原因.

有谁知道为什么泛型类型无法衍生出来Attribute?任何理论?

c# generics .net-attributes

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

使用Linq确定序列是否包含另一个序列的所有元素

给出两组值:

var subset = new[] { 2, 4, 6, 8 };

var superset = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Run Code Online (Sandbox Code Playgroud)

如何确定是否superset包含所有元素subset?

我想出了这个:

superset.Intersect(subset).Count() == subset.Count()
Run Code Online (Sandbox Code Playgroud)

这是最合乎逻辑且最有效的方法吗?

c# linq

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

基于Combobox值构建动态LINQ查询

我在Silverlight中有一个组合框.它有一个由我的一个LINQ-to-SQL对象(即Name,Address,Age等)的属性构建的值集合.我想根据组合框中选择的值过滤我的结果.

示例:假设我希望每个人姓氏为"Smith".我从下拉列表中选择"姓氏",然后在文本框控件中输入smith.通常我会写一个类似于......的LINQ查询

var query = from p in collection
其中p.LastName == textbox.Text
select p;

是否可以动态决定属性,也许使用Reflection?就像是

var query = from p in collection
where p.(DropDownValue)== textbox.Text
select p;

linq silverlight dynamic-linq linq-to-sql

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

构造函数注入和默认重载

让我们说我们有

public interface ITimestampProvider
{
    DateTime GetTimestamp();
}
Run Code Online (Sandbox Code Playgroud)

和一个消耗它的类

public class Timestamped
{
    private ITimestampProvider _timestampProvider

    public Timestamped(ITimestampProvider timestampProvider)
    {
        // arg null check

        _timestampProvider = timestampProvider;
    }

    public DateTime Timestamp { get; private set; }

    public void Stamp()
    {
        this.Timestamp = _timestampProvider.GetTimestamp();
    }
}
Run Code Online (Sandbox Code Playgroud)

和默认实现:

public sealed class SystemTimestampProvider : ITimestampProvider
{
    public DateTime GetTimestamp()
    {
        return DateTime.Now;
    }
}
Run Code Online (Sandbox Code Playgroud)

引入这个构造函数是有帮助的还是有害的?

public Timestamped() : this(new SystemTimestampProvider())
{}
Run Code Online (Sandbox Code Playgroud)

这是一个普遍的问题,即时间戳不是有趣的部分.

.net c# dependency-injection

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