是否可以使用C#中的方法命名变量?

时间:2018-11-11 22:15:31

标签: c# variables

我正在一个受 Python的argparse 模块启发的项目中,该模块基本上使您能够像python模块一样解析命令行参数。但是我需要使用函数来命名变量,例如:

NameVariable(name: "testVariable", type: string, value: "I am a string!");
Console.WriteLine(testVariable);

输出为:I am a string! 如果有的话有没有办法做到这一点 请让我知道谢谢。

1 个答案:

答案 0 :(得分:0)

您需要使用System.Dynamic.ExpandoObject类。

using System;
using System.Dynamic;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        var args = "--Bar --Foo MyStuff".Split();
        var parsedArgs = ParseArgs(args);
        Console.WriteLine(parsedArgs.Foo); //Writes "MyStuff"
        Console.WriteLine(parsedArgs.Bar); //Writes true;
        Console.WriteLine(parsedArgs.NotDefined); //Throws run time exception.
    }

    public static dynamic ParseArgs(string[] args)
    {
        IDictionary<string,object> result = new ExpandoObject();
        //Very basic implementation
        for(int i = 0; i < args.Length; i++)
        {
            if(args[i].StartsWith("--"))
            {
                if(i+1 < args.Length && !args[i+1].StartsWith("--"))
                {
                    result.Add(args[i].Substring(2), args[i+1]);
                }
                else
                {
                    result.Add(args[i].Substring(2), true);
                }
            }
        }
        return result;
    }
}

Run Example

还有here is a tutorial on dynamic objects,它是关于使.net与您可能会感兴趣的python代码一起工作。