私の知る限りでは、Cは#だけで、私たちはクラスのインスタンスで拡張メソッドを使用してみましょう:C#拡張メソッドは、クラスのインスタンスでのみ動作します。それのまわりで何か?
public class MyClass
{
public static string GetStuff()
{
return string.Empty;
}
}
public static class MyClassExtension
{
public static string GetOtherStuff(this MyClass myClass)
{
return string.Empty;
}
}
は使用方法:
MyClass.GetStuff();
MyClass.GetOtherStuff(); // Cannot resolve symbol 'GetOtherStuff'
new MyClass().GetOtherStuff(); // This works
しかし、私はMVCフレームワークは、私は拡張することができますことに気づきましたHtmlHelpersを使用して、クラスのインスタンスを作成せずに拡張メソッドを使用できるようにします。私はこのようなHtmlHelper
ための拡張メソッド作成した場合たとえば、私は本当に私と同じ結果を達成したいと思います
@Html.MyHtmlHelper() // no need to instantiate a class
:
public static string MyHtmlHelper(this HtmlHelper helper)
{
return string.Empty;
}
を私はこのようなカミソリビューでそれを使用することができますMyClass
だから私はできる:
MyClass.GetOtherStuff()
私はそれをどうすればいいですか?
'@ Html'はクラスのインスタンスではないと思いますか? –
詳細を教えていただけますか? MyClass()の表記を使用する必要がないように、その結果をどのように達成できますか? – tocqueville
Razorビューでは、 '@Html'は[このプロパティ]です(https://msdn.microsoft.com/en-us/library/system.web.mvc.webviewpage.html(v = vs.118).aspx #P:System.Web.Mvc.WebViewPage.Html)。使用時に(Razorのように)基本クラスの要件を適用する場合は、これを達成することができます。 –