【问题标题】: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# 特性,我想知道它们中的任何一个是否可以让我的代码不那么冗长。

标签: c# .net linq-to-sql c#-4.0 .net-3.5


【解决方案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 要求其他方法来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多