如何在开发时间基于另一个参数加载参数名称?

时间:2015-05-26 07:14:25

标签: c# compilation

我有这样的功能:

   var yourQuery  ="dove";
        $('.nav').on('click', 'li', function(){
             $('.nav li').removeClass('active');
            $("li:contains('" + yourQuery + "')").addClass('active');
    });

基于第一个参数(messageCode),其他参数名称会更改。 现在我为开发人员准备了这个函数,我想知道是否可以加载其他参数的名称,当他们输入messageCode时,他们可以看到下一个参数的名称。

例如,如果他们输入"首先"对于messageCode并调用该函数,Visual Studio会向他们显示如下内容: first argument

当他们键入" second"对于messageCode并调用该函数,Visual Studio显示如下: second argument

1 个答案:

答案 0 :(得分:1)

你做不到。根据您当前的方法,无法在C#中表示这一点。

可以做的是拥有一堆类,每个类都有一个WriteLog方法,这种方式在某种程度上模拟了Java枚举。所以像这样:

public class LogMessage
{
    public static FirstMessage First { get { return FirstMessage.Instance; } }
    public static SecondMessage Second { get { return SecondMessage.Instance; } }

    // Prevent instantiation outside this class's program text.
    private LogMessage() {}

    protected void LogImpl(string code, params string[] parameters)
    {
        ...
    }

    // You may have some common public methods here, potentially...

    public sealed class FirstMessage : LogMessage
    {
        internal readonly static FirstMessage Instance = new FirstMessage();

        private FirstMessage() {}

        public void WriteLog(string userName, string logSource, int targetLocation)
        {
            // Call to LogImpl here
        }
    }

    // Ditto for SecondMessage
}

然后调用代码将使用:

// Intellisense will prompt here...
LogMessage.First.WriteLog(...);