Можно ли назвать переменную с помощью метода в C #? - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над проектом, вдохновленным модулем Python argparse , который в основном позволяет анализировать аргументы командной строки , как это делает модуль python.Но мне нужно назвать переменную с помощью функции, например:

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

Вывод будет: I am a string! Есть ли способ сделать это, если так, пожалуйста, дайте мне знать спасибо.

1 Ответ

0 голосов
/ 12 ноября 2018

Для этого вам понадобится System.Dynamic.ExpandoObject class.

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;
    }
}

Пример выполнения

Также это учебник по динамическим объектам , посвященный работе .net с кодом Python, который может вас заинтересовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...