我试图实现一个类的属性,只能通过参数访问。为了澄清我的问题,看看我打算如何使用它
注意,这与Indexer不同。请不要标记重复
我的不完整类
public class Inventory{
public object Options..... // I don't know how to define this property
}
如何使用
Inventory inv = new Inventory();
string invLabel = (string)inv.Options["Label"];
int size = inv.Options["Size"];
inv.Options["Weight"] = 24;
在内部,Options从一个私有字典中读取数据。请告诉我如何定义Options属性。
注意:这与Indexer不同。使用Indexer,我可以使用下面的代码:
int size = inv["Size"];
但我的用法不同。
我找到了实现它的方法。
public class Options
{
public Dictionary<string, object> _options;
public Options()
{
_options = new Dictionary<string, object>();
}
public object this[string key] {
get { return _options.Single(r => r.Key == key).Value; }
set { _options[key] = value; }
}
}
public class Inventory
{
public Inventory()
{
Options = new Options();
}
public Options Options { get; set; }
}
用法:
var x = new Inventory();
x.Options["Size"] = 120;
x.Options["Box"] = "4 x 4 x 8";
Console.WriteLine(x.Options["Size"]);
Console.WriteLine(x.Options["Box"]);