我正在一个受 Python的argparse 模块启发的项目中,该模块基本上使您能够像python模块一样解析命令行参数。但是我需要使用函数来命名变量,例如:
NameVariable(name: "testVariable", type: string, value: "I am a string!");
Console.WriteLine(testVariable);
输出为:I am a string!
如果有的话有没有办法做到这一点
请让我知道谢谢。
答案 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;
}
}
还有here is a tutorial on dynamic objects,它是关于使.net与您可能会感兴趣的python代码一起工作。