C# 对象的动态属性

本文关键字:属性 动态 对象 | 更新日期: 2024-11-08 02:09:05

我正在考虑在数据库中设计一个存储序列化对象的字段。当我在实体中调用该属性时,它会返回 String 属性,这很明显。我正在寻找一种动态附加属性并将反序列化对象分配给类实例的方法。谁能提出最好的方法?

数据库结构

用户表

用户标识
.....
.....
.....
UserNotes (nvarchar)

类结构

  [Serializable]
 [XmlRoot("Notes")]
 public class GenericNotes {
     public DateTime Date {
         get;
         set;
     }
     public String CommentBy {
         get;
         set;
     }
     public string Type {
         get;
         set;
     }
     public string Comment {
         get;
         set;
     }
 }
 public class Users {
     public UserId int {
         get;
         set;
     }
     public string UserNotes {
         get;
         set;
     }
     // I dont have the following definition in the class because its coming from entity framework. 
     //But I want the following property attached to the class on runtime. 
     //I will take care of of deserializing using extension methods or some sort methods.
     public string List < GenericNotes > NotesCollection {
         get;
         set;
     }
 }

C# 对象的动态属性

您可以使用扩展方法来执行此操作,而不是属性

public static class UserExtension
{
    public static List<GenericNotes> GetNotes(this Users users)
    {
        //return your deserialized GenericNotes from string 
    }
}

然后你可以在任何地方使用它,比如

 List<GenericNotes> notes = users.GetNotes();