如何为属性定义别名

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 要求其他方法来做到这一点。

以上是关于如何为属性定义别名的主要内容,如果未能解决你的问题,请参考以下文章

如何为 mercurial 用户创建别名?

在linux中如何为一条命令取别名

如何为 MySQL 中的字段或列设置别名?

TypeScript 如何为泛型函数创建泛型类型别名?

如何为 Spark SQL 中的posexplode 列提供别名?

如何为从 .vue 中的别名导入的模块方法获取智能感知