{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/6136","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/6136/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/6136/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/6136/events","html_url":"https://github.com/dotnet/roslyn/issues/6136","id":112069562,"number":6136,"title":"Proposal: extension everything","user":{"login":"krwq","id":660048,"avatar_url":"https://avatars.githubusercontent.com/u/660048?v=3","gravatar_id":"","url":"https://api.github.com/users/krwq","html_url":"https://github.com/krwq","followers_url":"https://api.github.com/users/krwq/followers","following_url":"https://api.github.com/users/krwq/following{/other_user}","gists_url":"https://api.github.com/users/krwq/gists{/gist_id}","starred_url":"https://api.github.com/users/krwq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krwq/subscriptions","organizations_url":"https://api.github.com/users/krwq/orgs","repos_url":"https://api.github.com/users/krwq/repos","events_url":"https://api.github.com/users/krwq/events{/privacy}","received_events_url":"https://api.github.com/users/krwq/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-Language%20Design","name":"Area-Language Design","color":"5319e7"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Feature%20Request","name":"Feature Request","color":"fc2929"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":25,"created_at":"2015-10-19T04:25:00Z","updated_at":"2015-10-22T15:29:11Z","closed_at":null,"body":"Easiest explanation in the example:\r\n```csharp\r\nclass A\r\n{\r\n  public string ExistingMethod(int a);\r\n  public static void ExistingStaticMethod();\r\n}\r\n\r\ninternal /* or public */ extension class A\r\n{\r\n  public A(int someSpecialConstructor) : /* required */ this()\r\n  {\r\n    /*No need to type \"this.\"*/ExistingMethod(someSpecialConstructor);\r\n  }\r\n  public void Method()\r\n  {\r\n    /* No access to any private members */\r\n    /*No need to type \"this.\"*/ExistingMethod(42);\r\n  }\r\n  public static void StaticMethod()\r\n  {\r\n    /*No need to type \"A.\"*/ExistingStaticMethod();\r\n  }\r\n  public string Property\r\n  {\r\n    get\r\n    {\r\n      return \"test\";\r\n    }\r\n    set\r\n    {\r\n      ExistingMethod(value);\r\n    }\r\n  }\r\n  // etc..\r\n}\r\n```"},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/150262472","html_url":"https://github.com/dotnet/roslyn/issues/6136#issuecomment-150262472","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/6136","id":150262472,"user":{"login":"MgSam","id":1965570,"avatar_url":"https://avatars.githubusercontent.com/u/1965570?v=3","gravatar_id":"","url":"https://api.github.com/users/MgSam","html_url":"https://github.com/MgSam","followers_url":"https://api.github.com/users/MgSam/followers","following_url":"https://api.github.com/users/MgSam/following{/other_user}","gists_url":"https://api.github.com/users/MgSam/gists{/gist_id}","starred_url":"https://api.github.com/users/MgSam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MgSam/subscriptions","organizations_url":"https://api.github.com/users/MgSam/orgs","repos_url":"https://api.github.com/users/MgSam/repos","events_url":"https://api.github.com/users/MgSam/events{/privacy}","received_events_url":"https://api.github.com/users/MgSam/received_events","type":"User","site_admin":false},"created_at":"2015-10-22T15:29:11Z","updated_at":"2015-10-22T15:29:11Z","body":"Interesting. Thanks for the explanation. \r\n\r\nThough I do think that underlying implementation details should probably be secondary considerations when deciding the merits of a feature (if there's a will, there's a way). That being said, IMHO I think extension everything is near the bottom of the \"features I'd really like to see\" list, and not worth doing at all if additional state is not part of the deal."}}