5

VS2008 for VB.NET の T4 テンプレートで PGK.Extensions を使用しようとすると、次のようになります

RemoveAllSpecialCharacters は文字列のメンバーではありません..

私の T4 ヘッダー:

<#@ template language="VB" hostspecific="false" debug="true" inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" #>
<#@ output extension="vb" #>

<#@ assembly name="PGK.Extensions.dll" #> // the dll is found
<#@ import namespace="StringExtensions" #> //Try with and without namespace

ブロック コードでの拡張機能の使用:

<#
   Me.WriteLine(item.Name.RemoveAllSpecialCharacters.ToUpper)
#>

RemoveAllSpecialCharacters は、PGK.Extensions.dll の文字列拡張メソッドです。

誰でも私を助けることができますか?

編集:

わかった。これは:

<#@ template language="VBv3.5" ...

しかし、これは VS2008 プラグインの DevArt T4 Editor のインテリセンスと構文の強調表示を壊します。代わりに Tangible T4 Editor を使用してください。

4

2 に答える 2

1

拡張メソッドはコードからはオブジェクトに適用されるように見えますが、実際には静的メソッドとしてコンパイルされます。Microsoft からのこのリンクは、それに関する詳細情報を提供します。

したがって、 item.Name.RemoveAllSpecialCharacters() の呼び出しは、実際にはStringExtensions .RemoveAllSpecialCharacters(item.Name)としてコンパイルされます

したがって、次のように記述してみてください (テストされていませんが、動作するはずです)。

<#
    StringExtensions.RemoveAllSpecialCharacters(item.Name).ToUpper()
#>

それが役立つことを願っています。

于 2012-03-28T07:51:21.503 に答える