Eto has a few places where methods have been implemented as extensions that could been implemented as regular methods. From the .net Framework Design Guidelines: If you do own source code of a type, consider using regular instance methods instead.
One example of this is the (now obsolete) AddDockedControl(this DockContainer, Control). When typing container. the method does not show in Intellisense if the extension's namespace has not been imported. Worse, the developer is left wondering whether something else is wrong - it isn't easy to remember that a given method is an extension. This particular extension method has cost many cumulative minutes of productivity.
Here's a list of methods in the Eto assembly that are not implemented on interfaces. I haven't scanned these to determine which really need to be extensions. Some are implemented as extensions to allow the "this" variable to be null without crashing. I suggest that those methods have the Safe suffix to indicate this.
Bulk of these were in actions, which are now gone. Only ones left are ToShortcutString which is on an enum (so no other choice), and the generator-based ones. These may be going away soon when implementing #161.
Eto has a few places where methods have been implemented as extensions that could been implemented as regular methods. From the .net Framework Design Guidelines: If you do own source code of a type, consider using regular instance methods instead.
One example of this is the (now obsolete) AddDockedControl(this DockContainer, Control). When typing container. the method does not show in Intellisense if the extension's namespace has not been imported. Worse, the developer is left wondering whether something else is wrong - it isn't easy to remember that a given method is an extension. This particular extension method has cost many cumulative minutes of productivity.
Here's a list of methods in the Eto assembly that are not implemented on interfaces. I haven't scanned these to determine which really need to be extensions. Some are implemented as extensions to allow the "this" variable to be null without crashing. I suggest that those methods have the Safe suffix to indicate this.