ASP.NET MVCストアフロントのビデオシリーズをもう一度見ていて、今まで気づかなかったり、注意を払ったりしたことがないものを見ました。this
さまざまなメソッドのシグネチャリストに多くの参照があることに気づきました。1つの例を次に示します。
public static Category WithCategoryName(this IList<Category> list, string categoryName)
{
return
(
from s in list
where s.Name.Equals(categoryName, StringComparison.InvariantCultureIgnoreCase)
select s
)
.SingleOrDefault();
}
私はすぐに署名のIList<Category> list
とを理解しstring categoryName
ましたが、何をするのか混乱してthis
いました。
それで、95%VBの人である私は、コードをお気に入りのコンバーターにポップして、次のようにしました。
<System.Runtime.CompilerServices.Extension>
Public Shared Function WithCategoryName(list As IList(Of Category), categoryName As String) As Category
Return
(
From s In list
Where s.Name.Equals(categoryName, StringComparison.InvariantCultureIgnoreCase)
Select s
)
.SingleOrDefault()
End Function
まず第一に、なぜ<System.Runtime.CompilerServices.Extension>
含まれているのか完全にはわかりませんが、おそらくそれは単なるコンバーターですが、ご覧のとおりthis
、前述のと関係がない限り、私が知ることができるものには変換されませんでした<System.Runtime.CompilerServices.Extension>
。
したがって、質問は次のとおりです。
this
C#メソッドシグネチャで実際に何を参照および/または実行しますか?- VB.NETに相当するものはありますか?
質問1への回答:
this
したがって、実際には拡張メソッドを示していること、および与えられた回答から、インラインVBに相当するものはないように思われることを明確にしました。
ASP.NET MVCストアフロントのビデオについて触れたので、上記のC#の例は彼のCategoryFilters
クラスから抜粋したものです。これが、パイプとフィルターまたはパイプライン方法論として参照されたものを実装する方法であると思います。
質問2への回答:
VB.NETの拡張メソッドの処理方法は次のようなものだと思います。
Imports System.Runtime.CompilerServices
Public Module StringExtensions
<Extension()> _
Public Function IsNullOrBlank(ByVal s As String) As Boolean
Return s Is Nothing OrElse s.Trim.Length.Equals(0)
End Function
End Module