CodeModel.AddClass 메서드
새 클래스 코드 구문을 만든 다음 올바른 위치에 코드를 삽입합니다.
네임스페이스: EnvDTE
어셈블리: EnvDTE(EnvDTE.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입니다.새 클래스가 해당 구현을 상속하는 정규화된 형식 이름이나 CodeClass 개체의 SafeArray입니다.
- ImplementedInterfaces
형식: System.Object
필수적 요소로서,기본값은 0입니다.새 클래스에서 구현할 인터페이스를 각각 나타내는 정규화된 형식 이름이나 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 보안
- 직접 실행 호출자의 경우 완전히 신뢰합니다. 이 멤버는 부분적으로 신뢰할 수 있는 코드에서 사용할 수 없습니다. 자세한 내용은 부분 신뢰 코드에서 라이브러리 사용을 참조하십시오.