代码之家  ›  专栏  ›  技术社区  ›  mpen

C#/Linq:其中X是Y?

  •  1
  • mpen  · 技术社区  · 14 年前

    Linq有这个方便的功能 Where

    foreach (var method in typeof(Program).GetMethods())
    {
        foreach (var attr in method.GetCustomAttributes(inherit: true).Where(a => a is UrlAttribute))
        {
            Console.WriteLine(((UrlAttribute)attr).Url);
        }
    }
    

    但是对于只检索特定类型的对象来说,它似乎不是很方便,因为我仍然需要对它们进行强制转换。Linq没有解决这个问题的方法,是吗?


    这是个好办法吗?

    public static class Extensions
    {
        public static IEnumerable<T> OfType<T>(this IEnumerable<object> e)
        {
            return e.Where(x => x is T).Cast<T>();
        }
    }
    

    我正在学习如何编写自己的属性,现在我正在尝试找出如何检索所有属性。

    1 回复  |  直到 14 年前
        1
  •  7
  •   Joshua Evensen    14 年前

    我很确定这个方法已经存在了。

    http://msdn.microsoft.com/en-us/library/bb360913.aspx

    你的问题我漏了什么吗?