Can extension methods be applied to interfaces?

Of course they can; most of Linq is built around interface extension methods. Interfaces were actually one of the driving forces for the development of extension methods; since they can’t implement any of their own functionality, extension methods are the easiest way of associating actual code with interface definitions. See the Enumerable class for a … Read more

Razor HtmlHelper Extensions (or other namespaces for views) Not Found

Since the Beta, Razor uses a different config section for globally defining namespace imports. In your Views\Web.config file you should add the following: <configSections> <sectionGroup name=”system.web.webPages.razor” type=”System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″> <section name=”host” type=”System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″ requirePermission=”false” /> <section name=”pages” type=”System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″ requirePermission=”false” /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType=”System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, … Read more

Static extension methods [duplicate]

In short, no, you can’t. Long answer, extension methods are just syntactic sugar. IE: If you have an extension method on string let’s say: public static string SomeStringExtension(this string s) { //whatever.. } When you then call it: myString.SomeStringExtension(); The compiler just turns it into: ExtensionClass.SomeStringExtension(myString); So as you can see, there’s no way to … Read more

Operator Overloading with C# Extension Methods

This is not currently possible, because extension methods must be in static classes, and static classes can’t have operator overloads. But the feature is being discussed for some future release of C#. Mads talked a bit more about implementing it in this video from 2017. On why it isn’t currently implemented, Mads Torgersen, C# Language … Read more

Code equivalent to the ‘let’ keyword in chained LINQ extension method calls

Let doesn’t have its own operation; it piggy-backs off of Select. You can see this if you use “reflector” to pull apart an existing dll. it will be something like: var result = names .Select(animalName => new { nameLength = animalName.Length, animalName}) .Where(x=>x.nameLength > 3) .OrderBy(x=>x.nameLength) .Select(x=>x.animalName);

Extension methods must be defined in a non-generic static class

change public class LinqHelper to public static class LinqHelper Following points need to be considered when creating an extension method: The class which defines an extension method must be non-generic, static and non-nested Every extension method must be a static method The first parameter of the extension method should use the this keyword.

Convert string[] to int[] in one line of code using LINQ

Given an array you can use the Array.ConvertAll method: int[] myInts = Array.ConvertAll(arr, s => int.Parse(s)); Thanks to Marc Gravell for pointing out that the lambda can be omitted, yielding a shorter version shown below: int[] myInts = Array.ConvertAll(arr, int.Parse); A LINQ solution is similar, except you would need the extra ToArray call to get … Read more