C# 如何在不使用包装器的情况下向对象添加简单属性?

C# 如何在不使用包装器的情况下向对象添加简单属性?,c#,object,C#,Object,假设我有一个对象用户,我不能编辑它的类。如何向对象添加简单的属性(如username) 目前,我的实现是一个简单的包装器,它是使用用户构建的。然后,用户成为我的包装器对象的一个属性,包装器对象包含一个名为username的属性。但在我看来,这不是正确的方法。注意,用户对象不是dependencyobject,而且我知道扩展方法存在,但我不相信扩展方法存在,但我需要存储用户名,因此它不能是静态的 任何建议都是非常受欢迎的。从某种意义上讲,您要求在C#中实现该模式,正如中所讨论的,该模式无法直接实现

假设我有一个对象用户,我不能编辑它的类。如何向对象添加简单的属性(如username)

目前,我的实现是一个简单的包装器,它是使用用户构建的。然后,用户成为我的包装器对象的一个属性,包装器对象包含一个名为username的属性。但在我看来,这不是正确的方法。注意,用户对象不是dependencyobject,而且我知道扩展方法存在,但我不相信扩展方法存在,但我需要存储用户名,因此它不能是静态的


任何建议都是非常受欢迎的。

从某种意义上讲,您要求在C#中实现该模式,正如中所讨论的,该模式无法直接实现。但是,可以创建扩展方法(即setter和getter),而不是
T
类型的属性。由于无法添加字段,因此要存储和返回的值可以在后台保存在
字典中
;这种方法实际上不允许使用属性,但它提供了一种解决方案,它不要求
User
partial
或派生自
User

从User继承并添加属性。当然,这假设用户类不是密封的。顺便问一下,为什么你认为包装不是正确的方式?IMO包装是一种方法。您可以(在某种字典中)将属性与对象分开保存。如果用户是一个
partial
类,那么您可以定义另一个
partial User
类来扩展它的特性,但它不是一个partial类,也不能简单地从用户继承,因为C#中缺少双重固有性。