C# 使用KeyValuePair<&燃气轮机;作为属性与独立类与其他东西
在我的“业务对象”中显示“管理表”的正确方式是什么?我的Address对象上有以下内容C# 使用KeyValuePair<&燃气轮机;作为属性与独立类与其他东西,c#,object-initializers,C#,Object Initializers,在我的“业务对象”中显示“管理表”的正确方式是什么?我的Address对象上有以下内容 public class Address { public int AddressID { get; set; } public KeyValuePair<short, string> County { get; set; } ... } 在这两种方法之间有更好的方法吗?或者第三种方法更好吗?我刚刚运行了您的代码,它按预期工作 country属性具有正确的值Key=32和
public class Address
{
public int AddressID { get; set; }
public KeyValuePair<short, string> County { get; set; }
...
}
在这两种方法之间有更好的方法吗?或者第三种方法更好吗?我刚刚运行了您的代码,它按预期工作
country
属性具有正确的值Key
=32
和value
=La Crosse
你的新代码很难看。我要么删除
Country
属性的setter,要么使Country
类不可变。这种双重易变性,是一个等待发生的错误
使Country
类不可变可能是正确的决定,因为Id
=>名称
映射是固定的
我会使用:
public class County
{
public short? ID { get; private set; }
public string Name { get; private set; }
private Country(short? id,string name)
{
ID=id;
Name=name;
}
}
我刚刚运行了你的代码,它按预期工作
country
属性具有正确的值Key
=32
和value
=La Crosse
你的新代码很难看。我要么删除
Country
属性的setter,要么使Country
类不可变。这种双重易变性,是一个等待发生的错误
使Country
类不可变可能是正确的决定,因为Id
=>名称
映射是固定的
我会使用:
public class County
{
public short? ID { get; private set; }
public string Name { get; private set; }
private Country(short? id,string name)
{
ID=id;
Name=name;
}
}
Lukazoid给出了一个很好的提示,为什么不这样做,事实上,您正在显示的初始化将很好地工作。使用调试器可以很容易地证明这一点。问题是什么?Lukazoid给出了一个很好的提示,为什么不这样做,事实上,您正在显示的初始化将很好地工作。使用调试器可以很容易地证明这一点。问题是什么?
KeyValuePair
在这种情况下不会为您带来任何好处
为什么不直接说出来
public class Address
{
public int AddressID { get; set; }
public int CountyCode { get; set; }
public string CountyName { get; set; }
}
或者另一个版本是,您使用两个属性定义一个类型country
,然后使用该类型的属性
在代码中,清晰是最重要的。KeyValuePair
在这种情况下不会为您带来任何好处
为什么不直接说出来
public class Address
{
public int AddressID { get; set; }
public int CountyCode { get; set; }
public string CountyName { get; set; }
}
或者另一个版本是,您使用两个属性定义一个类型country
,然后使用该类型的属性
在代码中,清晰是最重要的。创建一个国家/地区对象,这样就可以清楚地知道这个短字符和字符串应该代表什么。创建一个国家/地区对象,这样就可以清楚地知道这个短字符和字符串应该代表什么。KVP的值是否来自数据库?是否可以将它们提取为枚举类型,这样您的幻数/字符就不会那么神奇了?我建议在这种情况下不要使用
KeyValuePair
;开发人员无法清楚地看到键
或值
实际上是什么(什么是short
键
用于县
?。创建您自己的类型,该类型具有适当的属性名称,以使您和同事的生活更轻松。我已删除了不相关的成员。如果您不同意,请还原。您的代码有效。那么您的问题是什么?@Lukazoid:请查看我的编辑,并让我知道这是否有更多帮助。)感知或者如果您的语句仍然有效。KVP的值是否来自数据库?是否可以将它们提取为枚举类型,这样您的神奇数字/字符就不会那么神奇了?我建议在这种情况下不要使用KeyValuePair
;开发人员无法清楚地看到键或值是什么代码>实际上是(什么是short
键
用于县
?。创建您自己的类型,该类型具有适当的属性名称,以使您和同事的生活更轻松。我已删除了不相关的成员。如果您不同意,请还原。您的代码有效。那么您的问题是什么?@Lukazoid:请查看我的编辑,并让我知道这是否有更多帮助。)感觉或者你的陈述是否仍然有效。那么,如果一个县的名称需要更改吗?这是一种很可能的可能性。当需要实际更新一个现有县时,创建一个新的县是不对的。我很想听听你对此的做法。大多数时候你都不知道不需要在运行时更改国家名称,只需在加载时更改一次。这不像国家总是更改名称。但即使您这样做,更改也应该只在国家类本身内部进行,而不应该通过刚刚使用国家的地方进行。例如,加载一个新的国家定义文件。然后如果County
需要更改吗?这是一种很有可能的可能性。创建一个新的County
,而实际上需要更新一个现有的County
,这是不对的。我很想听听您对此的做法。大多数情况下,您不需要在运行时更改国家名称,只需要在加载时更改一次。这不像国家总是在更改名称。但即使您这样做,更改也只能在国家类别本身内部进行,而不能通过刚刚使用国家的地方进行。例如,通过加载新的国家定义文件。