CodeModel2.CodeTypeFromFullName(String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
返回基于完全限定的名称的代码元素。
public:
EnvDTE::CodeType ^ CodeTypeFromFullName(System::String ^ Name);
public:
EnvDTE::CodeType ^ CodeTypeFromFullName(Platform::String ^ Name);
EnvDTE::CodeType CodeTypeFromFullName(std::wstring const & Name);
[System.Runtime.InteropServices.DispId(5)]
public EnvDTE.CodeType CodeTypeFromFullName (string Name);
[<System.Runtime.InteropServices.DispId(5)>]
abstract member CodeTypeFromFullName : string -> EnvDTE.CodeType
Public Function CodeTypeFromFullName (Name As String) As CodeType
参数
- Name
- String
必需。 完全限定的符号名,例如 Namespace1.Namespace2.Class1.Member1。
返回
CodeType 对象。
实现
- 属性
示例
Sub CodeTypeFromFullNameExample(ByVal dte As DTE2)
' Before running this example, open a project.
Try
Dim proj As Project
For Each proj In dte.Solution
Dim cm As CodeModel = proj.CodeModel
If IsNothing(cm) = False Then
Dim name As String = _
ConvertFullName(cm, "System.Object")
Dim typ As CodeType = cm.CodeTypeFromFullName(name)
If IsNothing(typ) = False Then
MsgBox(proj.Name & vbCrLf & name & "'s kind is " _
& typ.Kind.ToString())
Else
MsgBox(proj.Name & _
": CodeTypeFromFullName failed.")
End If
End If
Next
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 CodeTypeFromFullNameExample(DTE2 dte)
{
// Before running this example, open a project.
try
{
foreach (Project proj in dte.Solution)
{
CodeModel cm = proj.CodeModel;
if (cm != null)
{
string name = ConvertFullName(cm, "System.Object");
CodeType typ = cm.CodeTypeFromFullName(name);
if (typ != null)
MessageBox.Show(proj.Name + "\r\n" +
name + "'s kind is " + typ.Kind.ToString());
else
MessageBox.Show(proj.Name +
": CodeTypeFromFullName failed.");
}
}
}
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;
}
注解
如果在项目或其任何引用中都找不到指定的名称,则 CodeTypeFromFullName 返回 Nothing ,而不是返回 Kind 属性为的 vsCMElementOther 和属性的代码元素 InfoLocation vsCMInfoLocationNone 。
备注
在进行了某些类型的编辑之后,代码模型元素(例如类、结构、函数、特性、委托等)的值可能变为非确定性的,这意味着不能确定它们的值始终保持不变