第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

有沒(méi)有一種簡(jiǎn)單的方法可以在 Visual Studio 中注釋許多類和方法

有沒(méi)有一種簡(jiǎn)單的方法可以在 Visual Studio 中注釋許多類和方法

C#
交互式愛(ài)情 2022-12-24 10:42:51
我必須逐字地注釋數(shù)百個(gè)類和數(shù)千個(gè)方法。例如public class CompositeType{    bool boolValue = true;    string stringValue = "Hello ";    public bool BoolValue    {        get { return boolValue; }        set { boolValue = value; }    }    public string StringValue    {        get { return stringValue; }        set { stringValue = value; }    }}必須改成    [DataContract]    public class CompositeType    {        bool boolValue = true;        string stringValue = "Hello ";        [DataMember]        public bool BoolValue        {            get { return boolValue; }            set { boolValue = value; }        }        [DataMember]        public string StringValue        {            get { return stringValue; }            set { stringValue = value; }        }    }我怎樣才能輕松地自動(dòng)注釋所有這些類/方法??jī)H供參考..如果有人知道我如何使用它來(lái)協(xié)助,我確實(shí)安裝了resharper
查看完整描述

2 回答

?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

這是我的最終代碼。


using EnvDTE;

using EnvDTE80;

using System.Windows.Forms;

using System.Diagnostics;


public class C : VisualCommanderExt.ICommand

{

    public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 

    {

        this.DTE = DTE;


        AnnotateAllInterfacesAndMethods("Console1");


    }



    private void AnnotateAllInterfacesAndMethods(string projectName)

    {

        var res = AllClasses(projectName);

        foreach (EnvDTE.CodeInterface c in res)

        { 

            //ADD attributes

            if (c.Attributes.Count == 0)

            {

                c.AddAttribute("System.ServiceModel.ServiceContract", $"Name=\"{c.Name}\"");                 

            }

            else  

            {

                bool broken = false;

                var items = c.Attributes.GetEnumerator();

                while (items.MoveNext())

                {

                    CodeElement value = (CodeElement)items.Current;


                    if (value.Name == "ServiceContract")

                    { 

                        broken = true;

                        break;

                    }

                }

                //service contract not found. So we add it.

                if (!broken)

                {

                    c.AddAttribute("System.ServiceModel.ServiceContract", $"Name=\"{c.Name}\"");                    

                }

            }



            if (c.Members.Count > 0)

            {

                foreach (EnvDTE.CodeElement m in c.Members)

                {

                    if (m.Kind == EnvDTE.vsCMElement.vsCMElementFunction)

                    {

                        var func = (m as EnvDTE.CodeFunction);


                        if (func.Attributes.Count == 0)

                        {

                            func.AddAttribute("System.ServiceModel.OperationContract", $"Name=\"{func.Name}\"");

                        }

                        else

                        {

                            bool broken = false;

                            var items = func.Attributes.GetEnumerator();

                            while (items.MoveNext())

                            {

                                CodeElement value = (CodeElement)items.Current;


                                if (value.Name == "OperationContract")

                                {

                                    broken = true;

                                    break;

                                }

                            }

                            //OperationContract not found. So we add it.

                            if (!broken)

                            {

                                func.AddAttribute("System.ServiceModel.OperationContract", $"Name=\"{func.Name}\"");

                            }

                        }


                    }

                }

            }

        }

        System.Windows.MessageBox.Show("Done");

    }


    private System.Collections.Generic.List<EnvDTE.CodeInterface> AllClasses(string projectName)

    {

        System.Collections.Generic.List<EnvDTE.CodeInterface> result = new System.Collections.Generic.List<EnvDTE.CodeInterface>();


        foreach (EnvDTE.Project p in DTE.Solution.Projects)

        { 

            if (projectName == p.Name)

            { 

                EnumerateProjectItems(p.ProjectItems, result);

            }

        }

        return result;

    }


    private void EnumerateProjectItems(EnvDTE.ProjectItems items, System.Collections.Generic.List<EnvDTE.CodeInterface> result)

    {

        foreach (EnvDTE.ProjectItem i in items)

        { 

            if (i.FileCodeModel != null && i.FileCodeModel.CodeElements != null)

            {


                foreach (EnvDTE.CodeElement n in i.FileCodeModel.CodeElements)

                { 

                    if (n.Kind == EnvDTE.vsCMElement.vsCMElementNamespace)

                    {

                        foreach (EnvDTE.CodeElement c in (n as EnvDTE.CodeNamespace).Members)

                        {

                            if (c.Kind == EnvDTE.vsCMElement.vsCMElementInterface)

                            { 

                                result.Add(c as EnvDTE.CodeInterface);

                            }

                        }

                    } 

                }

            }

            if (i.ProjectItems != null)

                EnumerateProjectItems(i.ProjectItems, result);

        }

    }


    private EnvDTE80.DTE2 DTE;

}



查看完整回答
反對(duì) 回復(fù) 2022-12-24
?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

您可以使用以下Visual Commander命令 (C#)向當(dāng)前類及其屬性快速添加屬性:


public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 

{

    EnvDTE.TextSelection ts = DTE.ActiveWindow.Selection as EnvDTE.TextSelection;

    if (ts == null)

        return;


    EnvDTE.CodeClass codeClass = ts.ActivePoint.CodeElement[EnvDTE.vsCMElement.vsCMElementClass]

        as EnvDTE.CodeClass;

    if (codeClass == null)

        return;


    codeClass.AddAttribute("DataContract", null);

    foreach(EnvDTE.CodeElement i in codeClass.Children)

    {

        if (i is EnvDTE.CodeProperty)

            (i as EnvDTE.CodeProperty).AddAttribute("DataMember", null);

    }

}

只需將插入符號(hào)放在類定義中,然后從 VCmd 菜單或使用鍵盤(pán)快捷鍵調(diào)用命令。


查看完整回答
反對(duì) 回復(fù) 2022-12-24
  • 2 回答
  • 0 關(guān)注
  • 110 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)