Title: Extension Methods forward compatible
Tags: c#;extension-methods;future-proof
Question: With extension methods we can easily add methods to any type. Obviously this opens the possibility in a future version of .net the extension method could no longer get called (for example the type now includes a method with identical signature to the extension method).
Should this be a concern?
If so, how should I deal with this and design my extension methods as to minimise code changes should this happen?
Comment: If you are concerned about that, one solution would be not to use extension methods. `;)`
You could inherit from the class you are extending and add the method that way. You will get warnings that you are hiding the new method that is added later. Or you could just remove the `this` parameter modifier from the static method.

Here is the accepted answer: If the framework is changed so much in the future, there will always be compatibility issues. If a new framework method is added with the same name as your extension method, it is quite likely that they have the same, or at least very similar functionality and a refactoring is due anyways.
I think that the power of the extension methods is too large to ignore just because of this risk.
Comment for this answer: I agree. Make your extension methods as clear, obvious, and straightforward as possible.

Here is another answer: Use obscure method names that would never be used in the framework.
edit -- perhaps obscure wasn't the most appropriate word, please substitute with meaningful but less common verbage
Attempting to avoid signature conflicts is really the only strategy to avoiding the hassle of code rework (assuming the functionality of the extension method needs to be preserved and not simply converted to the framework's definition of the method).
Comment for this answer: If you're so worried you could always add a prefix, like ext_Redefine instead of Redefine.
Comment for this answer: Agreed, they should be meaningful, but I don't think meaningful and obscure need to be mutually exclusive.  Pull out the thesaurus and use less common but obvious verbs.

Here is another answer: I'm afraid that the only thing you can do is providing unique enough names to your extension methods so you're 100% sure you will never have a conflict.
Not talking about adding the name of your cat to the method's name, just try to be more creative :)

{'source': 'StackExchangeDataset', 'subset': 'stackoverflow.com', 'metadata': {'AnswerCount': 3, 'CommentCount': 1, 'ContentLicense': 'CC BY-SA 3.0', 'CreationDate': '2011:00:07/19/11', 'FavoriteCount': None, 'PostTypeId': 1, 'Tags': '<c#><extension-methods><future-proof>', 'Title': 'Extension Methods forward compatible', 'ViewCount': 168, 'id': 6747101, 'user_AboutMe': '<p>This is just here so I get the nice drop-shadow!</p>\n', 'user_AccountId': 291465.0, 'user_DisplayName': 'George Duckett', 'user_Reputation': 31070.0, 'user_Views': 3573.0, 'user_id': 593627.0}}