次の方法で共有


CodeModel.AddInterface メソッド

更新 : 2007 年 11 月

新しいインターフェイス コード構成を作成し、適切な位置にコードを挿入します。

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

構文

'宣言
Function AddInterface ( _
    Name As String, _
    Location As Object, _
    Position As Object, _
    Bases As Object, _
    Access As vsCMAccess _
) As CodeInterface
'使用
Dim instance As CodeModel
Dim Name As String
Dim Location As Object
Dim Position As Object
Dim Bases As Object
Dim Access As vsCMAccess
Dim returnValue As CodeInterface

returnValue = instance.AddInterface(Name, _
    Location, Position, Bases, Access)
CodeInterface AddInterface(
    string Name,
    Object Location,
    Object Position,
    Object Bases,
    vsCMAccess Access
)
CodeInterface^ AddInterface(
    String^ Name, 
    Object^ Location, 
    Object^ Position, 
    Object^ Bases, 
    vsCMAccess Access
)
function AddInterface(
    Name : String, 
    Location : Object, 
    Position : Object, 
    Bases : Object, 
    Access : vsCMAccess
) : CodeInterface

パラメータ

  • Name
    型 : System.String

    必ず指定します。追加するインターフェイスの名前。

  • Location
    型 : System.Object

    必ず指定します。新しいインターフェイス定義のパスとファイル名。ファイル名は、言語に応じて、プロジェクト ファイルへの相対パスまたは絶対パスで表されます。ファイルが既にプロジェクト項目になっていない場合は、ファイルがプロジェクトに追加されます。ファイルを作成してプロジェクトに追加できない場合、AddInterface は失敗します。

  • Position
    型 : System.Object

    省略可能です。既定では 0 が指定されます。ここで指定したコード要素の後に、新しい要素を追加します。値が CodeElement の場合は、その値の直後に新しい要素が追加されます。

    値が long 型の場合は、後ろに新しい要素を追加する要素が AddInterface によって示されます。

    コレクションのカウントは 1 から始まるため、0 を指定すると新しい要素がコレクションの最初に配置されます。値 -1 は要素を末尾に配置することを示します。

  • Bases
    型 : System.Object

    省略可能です。既定値は Nothingです。完全修飾型名の SafeArray、または新しいインターフェイスの派生元の CodeInterface オブジェクトの SafeArray を保持するバリアントになります。

戻り値

型 : EnvDTE.CodeInterface

CodeInterface オブジェクト。

解説

ネイティブな Visual C++ では、コロン区切り形式 (::) で完全修飾型名を指定する必要があります。他のすべての言語では、ピリオド区切りの書式がサポートされます。

引数が正しいかどうかは、コード モデルの背後にある言語によって決まります。

メモ :

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

Sub AddInterfaceExample(ByVal dte As DTE2)

    ' Before running this example, open a code document from a project.
    Try
        Dim projItem As ProjectItem = dte.ActiveDocument.ProjectItem
        Dim cm As CodeModel = projItem.ContainingProject.CodeModel

        ' Initialize the base interfaces array.
        Dim bases() As Object = { _
            ConvertFullName(cm, "System.IDisposable"), _
            ConvertFullName(cm, "System.IComparable") _
        }

        ' Create a new class.
        cm.AddInterface("TestInterface", projItem.Name, , bases)
    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 AddInterfaceExample(DTE2 dte)
{
    // Before running this example, open a code document from
    // a project.
    try
    {
        ProjectItem projItem = dte.ActiveDocument.ProjectItem;
        CodeModel cm = projItem.ContainingProject.CodeModel;

        // Initialize the base interfaces array.
        object[] bases = {
            ConvertFullName(cm, "System.IDisposable"), 
            ConvertFullName(cm, "System.IComparable")
        };

        // Create a new class.
        cm.AddInterface("TestInterface", projItem.Name, -1, bases, 
            vsCMAccess.vsCMAccessPublic);
    }
    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;
}

アクセス許可

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

参照

参照

CodeModel インターフェイス

CodeModel メンバ

EnvDTE 名前空間

その他の技術情報

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

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

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