CodeModel2.AddClass メソッド (String, Object, Object, Object, Object, vsCMAccess)
新しいクラス コード構成を作成し、適切な位置にコードを挿入します。
名前空間: EnvDTE80
アセンブリ: EnvDTE80 (EnvDTE80.dll 内)
構文
'宣言
Function AddClass ( _
Name As String, _
Location As Object, _
Position As Object, _
Bases As Object, _
ImplementedInterfaces As Object, _
Access As vsCMAccess _
) As CodeClass
CodeClass AddClass(
string Name,
Object Location,
Object Position,
Object Bases,
Object ImplementedInterfaces,
vsCMAccess Access
)
CodeClass^ AddClass(
String^ Name,
Object^ Location,
Object^ Position,
Object^ Bases,
Object^ ImplementedInterfaces,
vsCMAccess Access
)
abstract AddClass :
Name:string *
Location:Object *
Position:Object *
Bases:Object *
ImplementedInterfaces:Object *
Access:vsCMAccess -> CodeClass
function AddClass(
Name : String,
Location : Object,
Position : Object,
Bases : Object,
ImplementedInterfaces : Object,
Access : vsCMAccess
) : CodeClass
パラメーター
- Name
型 : System.String
必ず指定します。クラスの名前。
- Location
型 : System.Object
必ず指定します。新しいクラス定義のパスとファイル名。言語に応じて、ファイル名はプロジェクト ファイルへの相対パスまたは絶対パスで表されます。ファイルが既にプロジェクト項目になっていない場合は、ファイルがプロジェクトに追加されます。ファイルを作成してプロジェクトに追加できない場合は、AddClass が失敗します。
- Position
型 : System.Object
省略可能です。既定値は 0 です。ここで指定したコード要素の後に、新しい要素を追加します。値が CodeElement の場合は、その値の直後に新しい要素が追加されます。
値が long 型の場合は、後ろに新しい要素を追加する要素が AddClass によって示されます。
コレクションのカウントは 1 から始まるため、0 を指定すると新しい要素がコレクションの最初に配置されます。値 -1 は要素を末尾に配置することを示します。
- Bases
型 : System.Object
必ず指定します。既定値は 0 です。完全修飾型名の SafeArray、または新しいクラスの実装の継承元である CodeClass オブジェクトの SafeArray。
- ImplementedInterfaces
型 : System.Object
必ず指定します。既定値は 0 です。完全修飾型名の SafeArray、または新しいクラスが実装するインターフェイスを表す CodeInterface オブジェクトの SafeArray。
- Access
型 : EnvDTE.vsCMAccess
省略可能です。定数 vsCMAccess。
戻り値
型 : EnvDTE.CodeClass
CodeClass オブジェクト。
解説
引数が正しいかどうかは、コード モデルの背後にある言語によって決まります。
[!メモ]
特定の種類の編集を行った後に、クラス、構造体、関数、属性、デリゲートなどのコード モデル要素の値を決定できないことがあります。つまり、これらの要素の値は、信頼できる値ではなく、常に同じ値になるとは限りません。詳細については、「コード モデルを使用したコードの調査 (Visual Basic)」で、コード モデル要素値を変更する方法についての説明を参照してください。
例
Sub AddClassExample(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 classes array and the implemented
' interfaces array.
Dim bases() As Object = {ConvertFullName(cm, "System.Object")}
Dim interfaces() As Object = { _
ConvertFullName(cm, "System.IDisposable"), _
ConvertFullName(cm, "System.IComparable") _
}
' Create a new class.
cm.AddClass("TestClass", projItem.Name, , bases, interfaces)
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 AddClassExample(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 classes array and the implemented
// interfaces array.
object[] bases = {ConvertFullName(cm, "System.Object")};
object[] interfaces = {
ConvertFullName(cm, "System.IDisposable"),
ConvertFullName(cm, "System.IComparable")
};
// Create a new class.
cm.AddClass("TestClass", projItem.Name, -1, bases,
interfaces, 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;
}
.NET Framework セキュリティ
- 直前の呼び出し元に対する完全な信頼。このメンバーは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。
参照
関連項目
その他の技術情報
方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する