你如何为一般类型的类编写C#扩展方法

Mat*_*ell 9 c# generics asp.net-mvc extension-methods

这应该是一个简单的.

我想在System.Web.Mvc.ViewPage <T>类中添加一个扩展方法.

这个扩展方法应该怎么样?

我的第一个直觉思想是这样的:

namespace System.Web.Mvc
{
    public static class ViewPageExtensions
    {
        public static string GetDefaultPageTitle(this ViewPage<Type> v)
        {
            return "";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一般解决方案是这个答案.

扩展System.Web.Mvc.ViewPage类的具体解决方案是我的答案,从一般解决方案开始.

不同之处在于,在特定情况下,您需要一般类型化的方法声明和一个声明来强制泛型类型作为引用类型.

Dav*_*ult 17

我没有在我当前的机器上安装VS,但我认为语法是:

namespace System.Web.Mvc
{
    public static class ViewPageExtensions
    {
        public static string GetDefaultPageTitle<T>(this ViewPage<T> v)
        {
            return "";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*ell 5

谢谢leddt.这样做会产生错误:

类型'TModel'必须是引用类型才能在泛型类型或方法中将其用作参数'TModel'

这让我想到了这个页面,它产生了这个解决方案:

namespace System.Web.Mvc
{
    public static class ViewPageExtensions
    {
        public static string GetDefaultPageTitle<T>(this ViewPage<T> v) 
          where T : class
        {
            return "";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)