ivaylokenov / AspNet.Mvc.TypedRouting

A collection of extension methods providing strongly typed routing and link generation for ASP.NET Core MVC projects.
https://mytestedasp.net/
MIT License
485 stars 36 forks source link

"this" keyword required? #28

Open jorgeyanesdiez opened 7 years ago

jorgeyanesdiez commented 7 years ago

In the following scenario, keyword this is required; I assume this is because you have two generic methods with both TController : Controller and TController : class. This is annoying. Why do you need the TController: class version? Am I missing something?

using Microsoft.AspNetCore.Mvc;

namespace MyNamespace
{
    public class HomeController
        : Controller
    {
        public IActionResult Index()
        {
            return this.RedirectToAction<OtherController>(c => c.Index());
        }
    }
}

Additionally, it'd be great if your extension methods lived under another namespace, and not the official Microsoft.AspNetCore.Mvc, mainly for clarity and extensibility. For example, to fix the above I thought of making a wrapper class in my namespace so that only the methods with TController : Controller are "locatable" in my code, but since I obviously need the official Microsoft.AspNetCore.Mvc namespace, then I get method name clashes. What do you think?

ivaylokenov commented 7 years ago

@jorgeyanesdiez Hi, the this keyword is required by the C# language when your extension method is called from the extended class itself. I do not know any options to remove it.

As for the namespace, I will think about it. Thank you for the suggestion! 👍