0
codeModelを使用してファイルにコードを追加できます。Vspackage開発、ファイル内またはクラス内のコード要素を取得する方法
これで、変数などのコード要素を指定したクラスに追加したいと考えています。
私が最初にやりたいことは、変更したいクラスを取得することです。続き が私のコードです:
IVsProject project = YHMExtensionHelper.GetSelectedProject();
int found;
uint itemId;
VSDOCUMENTPRIORITY[] pdwPriority = new VSDOCUMENTPRIORITY[1];
project.IsDocumentInProject("TEST.h", out found, pdwPriority, out itemId);
if (found == 0 || itemId == 0)
return;
Microsoft.VisualStudio.OLE.Interop.IServiceProvider oleSp = null;
project.GetItemContext(itemId, out oleSp);
if (oleSp == null)
return;
ServiceProvider sp = new ServiceProvider(oleSp);
EnvDTE.ProjectItem item = sp.GetService(typeof(EnvDTE.ProjectItem)) as EnvDTE.ProjectItem;
var codeModel = item.FileCodeModel;
var eles = codeModel.CodeElements;
for (int i = 0; i < eles.Count; i++)
{
var singleItem = eles.Item(i);
var str = singleItem.Name;
}
しかし、これは動作しません、私はeles.Countを得ることができ、私はeles.Item(i)で任意の項目を取得することはできません。
TEST.hには、単純なC++クラスがあります。
私のやり方を教えてください。