【问题标题】:Find usage of property from base entity从基础实体中查找属性的使用
【发布时间】:2014-11-07 16:35:44
【问题描述】:

我试图在属性属于基类的类中查找属性的用法。这是一个令牌示例:

class Program
{
    class Item
    {
        public DateTime DeletedStamp { get; set; }

        public decimal Price { get; set; }
    }

    class Book : Item
    {
        public string Title { get; set; }

        public string Author { get; set; }
    }

    class Bicycle : Item
    {
        public string Type { get; set; }

        public string Producer { get; set; }
    }

    static void Main(string[] args)
    {
        var book = new Book()
        {
            Title = "Atlas Shrugged",
            Author = "Ayn Rand",
            Price = 2.99M
        };

        var bicycle = new Bicycle()
        {
            Type = "Mountain bike",
            Price = 499.99M,
            Producer = "Biker Ben",
            DeletedStamp = DateTime.Now
        };

        Console.WriteLine(book.Title);
        Console.WriteLine(book.Price);

        Console.WriteLine(bicycle.Price);
        Console.WriteLine(bicycle.DeletedStamp);
    }
}

如果我只想在自行车物品中找到 Price 的用法,我发现我很不走运。我在 Visual Studio 2013 中使用 re-sharper,Find Usage 会找到 Price 的所有用法,包括 Book 中的用法。 这是一个小例子,但是在许多其他类中使用了一个基类,因此无法追踪其用法。

我正在寻找任何提示、技巧、扩展或魔法来解决这个难题。

【问题讨论】:

    标签: c# visual-studio-2013 resharper


    【解决方案1】:

    对于这种情况,ReSharper 的 SRP(搜索并替换为模式)非常有用。

    Menu Resharper->Find->Search with Pattern...

    在此处定义以下模式:

    $Item$.Price
    

    of 仅用于写入:

    $Item$.Price = $exp$;
    

    或仅用于读取用途:

    $exp$ = $Item$.Price
    

    其中$Item$ 应该是表达式占位符,选择类型“自行车” 并且不要忘记检查“正是这种类型”。

    $exp$ 可以保持未定义

    【讨论】:

    • 这太棒了!很长时间以来,我一直在寻找一种方法来做到这一点,但有人告诉我这是不可能的。所以不同意:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2012-02-24
    • 2019-07-02
    • 1970-01-01
    • 2017-12-08
    • 2014-08-12
    • 2019-02-11
    相关资源
    最近更新 更多