如何为属性定义别名
Posted
技术标签:
【中文标题】如何为属性定义别名【英文标题】:How to define an alias for a property 【发布时间】:2012-05-30 09:59:51 【问题描述】:我想为生成的代码中的属性生成别名。到目前为止,我能做的只有:
partial class Purchase
public User Customer
get
return this.User;
set
this.User = value;
我想知道是否还有其他方法可以在 C# 中定义别名。 Purchase
类是由 Linq-to-SQL 生成的
【问题讨论】:
Linq2Sql 不允许您更改映射名称吗? @HenkHolterman 如果这样做,我将不得不在每次重新生成 DBML 文件时重复该过程。 好的,如果这是一个问题。但是您发布的代码正在创建别名。那么实际的问题是什么?有什么问题吗? @HenkHolterman 没有错。当我不得不说Customer
获取和设置相同的属性时,我只是觉得重复自己,我知道这是一些晦涩的 C# 特性,我想知道它们中的任何一个是否可以让我的代码不那么冗长。
【参考方案1】:
如果您想要使用 newtonSoft 将信息发送到 JSON 的不同属性名称,您可以使用
[JsonProperty("alias_name")]
public type YourProperty get;set;
如果您不希望您的对象遵循 C# 约定并与要接收或发送的 JSON 对象匹配,这可以为您提供帮助
【讨论】:
这正是我想要的。谢谢。【参考方案2】:不,这在 C# 中是不可能的。属性名称是您可以为其定义的单个标识符。
不知道这是否是您要搜索的内容:
但您可以定义(比如)Dictionary<string,object>
,其中Key
是属性名,value
是属性的值。通过这种方式,您可以定义动态属性现金,在运行时更改属性名称和值。
或者可以使用ExpandoObject,如果你使用C# 4.0
【讨论】:
在发布的代码中,客户是用户的别名。 OP 要求其他方法来做到这一点。以上是关于如何为属性定义别名的主要内容,如果未能解决你的问题,请参考以下文章