仅允许将类的属性用作方法参数

时间:2019-07-01 16:05:52

标签: c#

如何确保仅将类中的oncreate用作方法的参数?显然,我可以使用常规字符串作为方法参数,但这意味着基本上所有内容都可以传递给方法。

一个例子:

static readonly string

我想确保只有using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 { class Program { public static class Foo { public static readonly string Bar = "this is effectively a configuration value"; public static string CoolMethod(string bar) { if (bar == "this is effectively a configuration value") { return "Here is the info you wanted"; } else { return "no"; } } } static void Main(string[] args) { var test = Foo.CoolMethod(Foo.Bar); Console.WriteLine(test); Console.ReadKey(); } } } 的属性(例如字符串Foo)可以用作Bar的参数。该类中可能允许传递多个字符串属性。这可能吗?

用例是将各种模板值传递到一个返回CoolMethod对象的方法中,但我想限制可以传递的内容,以便可以将模板维护在一个位置,而不是随机地将其写在多个位置地方。

1 个答案:

答案 0 :(得分:2)

我将设置一个枚举来表示配置属性,并将其用作方法的参数:

public enum ConfigOption
{
    Foo,
    Bar
}

private static Dictionary<ConfigOption, string> _configLookup = new Dictionary<ConfigOption, string>
{
    { ConfigOption.Foo, "Foo" },
    { ConfigOption.Bar, "Bar" }
};

public static string CoolMethod(ConfigOption configOption)
{
    if (!_configLookup.TryGetValue(configOption, out string value))
    {
        // Handle error
    }

    // Use value retrieved from dictionary.
}