AspNet.Mvc.TypedRouting icon indicating copy to clipboard operation
AspNet.Mvc.TypedRouting copied to clipboard

"this" keyword required?

Open jorgeyanesdiez opened this issue 7 years ago • 1 comments

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?

jorgeyanesdiez avatar Jan 12 '17 17:01 jorgeyanesdiez

@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! 👍

ivaylokenov avatar Jan 14 '17 16:01 ivaylokenov