次の方法で共有


CodeModel.CodeTypeFromFullName メソッド

完全限定名に基づいてコード要素を返します。

名前空間:  EnvDTE
アセンブリ:  EnvDTE (EnvDTE.dll 内)

構文

'宣言
Function CodeTypeFromFullName ( _
    Name As String _
) As CodeType
CodeType CodeTypeFromFullName(
    string Name
)
CodeType^ CodeTypeFromFullName(
    String^ Name
)
abstract CodeTypeFromFullName : 
        Name:string -> CodeType 
function CodeTypeFromFullName(
    Name : String
) : CodeType

パラメーター

  • Name
    型 : System.String
    必ず指定します。 Namespace1.Namespace2.Class1.Member1 などの完全限定シンボル名。

戻り値

型 : EnvDTE.CodeType
CodeType オブジェクト。

解説

指定した名前がプロジェクトまたはその参照のいずれでも見つからない場合、CodeTypeFromFullName は、vsCMElementOtherKind プロパティや vsCMInfoLocationNoneInfoLocation プロパティでコード要素を返しません。その代わりに Nothing を返します。

[!メモ]

特定の種類の編集を行った後に、クラス、構造体、関数、属性、デリゲートなどのコード モデル要素の値を決定できないことがあります。つまり、これらの要素の値は、信頼できる値ではなく、常に同じ値になるとは限りません。詳細については、「コード モデルを使用したコードの調査 (Visual Basic)」で、コード モデル要素値を変更する方法についての説明を参照してください。

Sub CodeTypeFromFullNameExample(ByVal dte As DTE2)

    ' Before running this example, open a project.
    Try
        Dim proj As Project
        For Each proj In dte.Solution
            Dim cm As CodeModel = proj.CodeModel
            If IsNothing(cm) = False Then
                Dim name As String = _
                    ConvertFullName(cm, "System.Object")
                Dim typ As CodeType = cm.CodeTypeFromFullName(name)

                If IsNothing(typ) = False Then
                    MsgBox(proj.Name & vbCrLf & name & "'s kind is " _
                        & typ.Kind.ToString())
                Else
                    MsgBox(proj.Name & _
                        ": CodeTypeFromFullName failed.")
                End If
            End If
        Next
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub

Function ConvertFullName(ByVal cm As CodeModel, _
    ByVal fullName As String) As String

    ' Convert a .NET type name into a C++ type name.
    If (cm.Language = CodeModelLanguageConstants.vsCMLanguageVC) Or _
        (cm.Language = CodeModelLanguageConstants.vsCMLanguageMC) Then
        Return fullName.Replace(".", "::")
    Else
        Return fullName
    End If

End Function
public void CodeTypeFromFullNameExample(DTE2 dte)
{
    // Before running this example, open a project.
    try
    {
        foreach (Project proj in dte.Solution)
        {
            CodeModel cm = proj.CodeModel;
            if (cm != null)
            {
                string name = ConvertFullName(cm, "System.Object");
                CodeType typ = cm.CodeTypeFromFullName(name);

                if (typ != null)
                    MessageBox.Show(proj.Name + "\r\n" + 
                        name + "'s kind is " + typ.Kind.ToString());
                else
                    MessageBox.Show(proj.Name + 
                        ": CodeTypeFromFullName failed.");
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

string ConvertFullName(CodeModel cm, string fullName)
{
    // Convert a .NET type name into a C++ type name.
    if ((cm.Language == CodeModelLanguageConstants.vsCMLanguageVC) || 
        (cm.Language == CodeModelLanguageConstants.vsCMLanguageMC))
        return fullName.Replace(".", "::");
    else
        return fullName;
}

.NET Framework セキュリティ

  • 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

関連項目

CodeModel インターフェイス

EnvDTE 名前空間

その他の技術情報

方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する

コード モデルを使用したコードの調査 (Visual Basic)

コード モデルを使用したコードの調査 (Visual C#)