FileCodeModel.AddInterface(String, Object, Object, vsCMAccess) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает новую конструкцию кода интерфейса и вставляет код в нужное место.
EnvDTE::CodeInterface AddInterface(std::wstring const & Name, winrt::Windows::Foundation::IInspectable const & Position, winrt::Windows::Foundation::IInspectable const & Bases, EnvDTE::vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[System.Runtime.InteropServices.DispId(9)]
public EnvDTE.CodeInterface AddInterface (string Name, object Position, object Bases, EnvDTE.vsCMAccess Access = EnvDTE.vsCMAccess.vsCMAccessDefault);
[<System.Runtime.InteropServices.DispId(9)>]
abstract member AddInterface : string * obj * obj * EnvDTE.vsCMAccess -> EnvDTE.CodeInterface
Public Function AddInterface (Name As String, Optional Position As Object, Optional Bases As Object, Optional Access As vsCMAccess = EnvDTE.vsCMAccess.vsCMAccessDefault) As CodeInterface
Параметры
- Name
- String
Обязательный. Имя нового интерфейса.
- Position
- Object
Необязательный параметр. По умолчанию равно 0. Элемент кода, после которого добавляется новый элемент. Если значением является CodeElement, новый элемент добавляется непосредственно после него.
Если значение имеет тип данных Long, AddInterface(String, Object, Object, vsCMAccess) указывает, после какого элемента следует добавить новый элемент.
Поскольку в коллекциях нумерация элементов начинается с 1, значение 0 означает, что новый элемент следует поместить в начало коллекции. Значение -1 означает, что элемент следует поместить в конец.
- Bases
- Object
Необязательный параметр. Значение по умолчанию — Nothing. Вариант, содержащий массив SafeArray полных имен типов или объектов, CodeInterface от которых наследуется новый интерфейс.
- Access
- vsCMAccess
Необязательный параметр. Константа vsCMAccess.
Возвращаемое значение
Объект CodeInterface.
- Атрибуты
Примеры
Sub AddInterfaceExample2(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.
projItem.FileCodeModel.AddInterface("TestInterface", , 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 AddInterfaceExample2(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.
projItem.FileCodeModel.AddInterface("TestInterface", -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;
}
Комментарии
Для полных имен типов в Visual C++ необходимо использовать формат с разделителем в виде двух двоеточий (::). Все остальные языки поддерживают формат с разделителем-точкой.
Правильность аргументов определяется языком, на котором наследуется модель кода.