如何实现带有参数的属性



我试图实现一个类的属性,只能通过参数访问。为了澄清我的问题,看看我打算如何使用它

注意,这与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"]);

最新更新