Strikethrough missing for [Obsolete] methods

Dear Joe,

I wrote a static class containing a method with a name similar to one inherited from System.Object. To mask the confusing inherited method (in this demo, System.Object.ReferenceEquals), I shadowed it by creating a new ReferenceEquals and marked it with [Obsolete]:

I expected LINQPad to show a strikethrough in IntelliSense, but it did not:

For comparison, LINQPad’s own obsolete method Util.CurrentQueryPath renders the strikethrough correctly:

If this is by design, I’d love to understand the rationale. Otherwise, I hope this can be addressed in a future update.

Thank you!

Comments

  • This is because it shows a strikeout only if all overloads up the type hierarchy for members with that name are marked as obsolete. This is usually what you want, because you may want to, say, replace a single-parameter overload with a dual-parameter overload. I've not written special logic to filter out the case in question.

  • @JoeAlbahari said:
    This is because it shows a strikeout only if all overloads up the type hierarchy for members with that name are marked as obsolete. This is usually what you want, because you may want to, say, replace a single-parameter overload with a dual-parameter overload. I've not written special logic to filter out the case in question.

    Thank you for clarifying.