FileCodeModel.AddClass メソッド
更新 : 2007 年 11 月
新しいクラス コード構成を作成し、適切な位置にコードを挿入します。
名前空間 : EnvDTE
アセンブリ : EnvDTE (EnvDTE.dll 内)
構文
'宣言
Function AddClass ( _
Name As String, _
Position As Object, _
Bases As Object, _
ImplementedInterfaces As Object, _
Access As vsCMAccess _
) As CodeClass
'使用
Dim instance As FileCodeModel
Dim Name As String
Dim Position As Object
Dim Bases As Object
Dim ImplementedInterfaces As Object
Dim Access As vsCMAccess
Dim returnValue As CodeClass
returnValue = instance.AddClass(Name, _
Position, Bases, ImplementedInterfaces, _
Access)
CodeClass AddClass(
string Name,
Object Position,
Object Bases,
Object ImplementedInterfaces,
vsCMAccess Access
)
CodeClass^ AddClass(
String^ Name,
Object^ Position,
Object^ Bases,
Object^ ImplementedInterfaces,
vsCMAccess Access
)
function AddClass(
Name : String,
Position : Object,
Bases : Object,
ImplementedInterfaces : Object,
Access : vsCMAccess
) : CodeClass
パラメータ
Name
型 : System.String必ず指定します。クラスの名前。
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 オブジェクト。
解説
引数が正しいかどうかは、コード モデルの背後にある言語によって決まります。
例
Sub AddClassExample2(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.
projItem.FileCodeModel.AddClass("TestClass", , 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 AddClassExample2(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.
projItem.FileCodeModel.AddClass("TestClass", -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;
}
アクセス許可
- 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。