2016-03-03 65 views
2

我只是好奇这是否可以实现:我目前有一个问题,我使用控制器来设置和获取类内的数据,这是通过处理器端的方法和实例。C# - 使用控件的类中的阵列基础结构

我只是想知道,因为做public string x { get; set; }可以变得非常漫长,每个属性,您的项目组成。

有没有一种方法可以在类内实现这种思想?

public core Array[] (
      Option1 => string Array[] (
      Name => 'example' 
     ), 
      Option2 => String Array[] (
      Name => 'example2' 
     ) { set; get; } 
); 

当然,这只是一种理论,并不会确切的解决方案。我想知道如果我会:

1)需要一个控制器时,将数据附加到索引的。
2)需要实例控制器处理的类,或者如果我可以通过主类方法实现它。
3)需要多维数组或列表。

我目前的解决方案是啰嗦,并且由于Core网站使用的数据量很大,对于添加的每个功能,响应都是递减的。

任何人都可以参考任何基础设施的参考资料,或者可以通过这种思想来实际分配属性吗?

提前感谢您。

编辑:我的意思是这样(PHP):

$example = array (
    'location1' => array(
     'location_id' => 1 
    ), 
    'location2' => array(
     'location_id' => 2 
    ) 
); 

现在,数据可以被处理简单:

foreach($example as $k=>$v){ // todo: handle }

所以这里$ K为您的数组名称(即它可能是,名称,地址)和$ v变成你的嵌套数组,使得数据处理更容易。

+2

型'prop'然后按Tab键 – dotctor

+0

我是新来的'C#',我若为此道歉问题不是最好的描述。我不理解你的评论是指什么?感谢您的输入,然而,@dotctor – KDOT

+0

哦,我只是厌倦了,它自动做'get;设置;'为我。哈哈,多数民众赞成真棒! – KDOT

回答

4

虽然我非常不赞同与这种模式的用法,我仍然认为这是很有价值的了解。

我认为您正在寻找Dictionary<TKey, TValue>。它提供了一种将任何类型的键映射到任何类型的值的方法。为了您的使用情况:

IDictionary<string, string> DynamicProperties {get; set;} = new Dictionary<string, string> 
{ 
    { "FirstName", "John" }, 
    { "LastName", "Doe" } 
}; 

然后,您可以遍历你的“性”有一个循环:

foreach(KeyValuePair pair in DynamicProperties) 
{ 
    string key = pair.Key; // "FirstName", "LastName" 
    string value = pair.Value; // "John", "Doe" 
    // Use them as you wish. 
} 

你可以有字典的字典了。要匹配您的更新示例:

IDictionary<string, IDictionary<string, int>> Example {get; set;} = new Dictionary<string, IDictionary<string, int>> 
{ 
    {"location1", new Dictionary<string, int> {{"location_id", 1}}}, 
    {"location2", new Dictionary<string, int> {{"location_id", 2}}} 
}; 

但看看这段代码 - 您正在寻找简单性。这并不简单,也不简单,清楚或可测试。拥有类和属性是C#中的一种方式。

我认为这里问题的根源在于你用C#编码,但用PHP思想思考。C#是强类型,而PHP是弱类型,(见本wiki article),你需要适当调整自己的思想。

+0

请参阅我在PHP中使用了4年。最近得到了C#的学徒,并且看到了C#多长时间的疯狂。我仍然不明白人们为什么不使用Hack,因为它使用了像你所说的那样弱的**语言,但是具有“C”语言的优化性能。这些C#控制器,处理程序和实例非常混乱,以至于:/感谢您帮助我理解! – KDOT

+0

@ KyleE4K Longer不一定更糟糕,编写最紧凑的代码不应该是一个目标,编写最具可维护性和可读性的代码应该是。很多语言都有不同的意识形态,你可以这样看待它:当在罗马,像罗马人那样做...... – Icepickle

+0

Gediminas,将字典设置为“IDictionary '看不到只有字符串在那里?然后,可以很容易地添加一个新的Dictionary 作为任何属性的值?虽然我非常赞同你的批评意见;) – Icepickle