C# 动态/自定义属性

C# 动态/自定义属性,c#,dynamic,properties,dynamic-properties,C#,Dynamic,Properties,Dynamic Properties,我想使用动态属性,如下所示: public class CustomProperty { public string PropType { get; set; } public string PropValue { get; set; } public string PropName { get; set; } ... } PropType PropValue PropName -------- --------- -------- String "Wi

我想使用动态属性,如下所示:

public class CustomProperty
{
  public string PropType { get; set; }
  public string PropValue { get; set; }
  public string PropName { get; set; }
  ...
}
PropType   PropValue   PropName
--------   ---------   --------
String     "William"   "Name"
Int64      "21"        "Age"
String     "John"      "Name"
Int64      "32"        "Age"
String     "Brown"     "Haircolor"
...
…然后将这些属性保存到数据库,如下所示:

public class CustomProperty
{
  public string PropType { get; set; }
  public string PropValue { get; set; }
  public string PropName { get; set; }
  ...
}
PropType   PropValue   PropName
--------   ---------   --------
String     "William"   "Name"
Int64      "21"        "Age"
String     "John"      "Name"
Int64      "32"        "Age"
String     "Brown"     "Haircolor"
...
我不认为我是第一个有这样想法的人,所以我正在寻找一个实现(poen source/nuget等)。但是我很难找到一个

所以我的问题是:是否有一个动态特性的实现可以被使用(或改进,如果需要的话)

编辑:正如richardtallent指出的,我正在寻找EAV模式。那么,是否有一个可以使用的实施方案?还是我必须自己写点东西。我想以前已经做过很多次了。

从4.0版本开始:动态扩展和收缩对象

如果这不是您要搜索的,请澄清。

从4.0版本开始:动态扩展和收缩对象


如果这不是您要搜索的,请澄清。

您所描述的通常称为“EAV”(实体属性值)模式

许多人认为它是应用于关系数据库时的反模式,因为使用它对维护适当的规范化数据和有效的CRUD操作具有重要意义。然而,它确实有它的用途

从LotusNotes到GoogleBigtable,没有SQL数据库使用此主题的变体。因此,如果您不想使用SQL Server,最好的办法可能是研究C#可访问的无SQL数据库,如MongoDB


如果您正在寻找序列化到传统RDBMS的东西,我不知道有任何开源解决方案。在C#中有ExpandoObjects,但我不知道该系统是否包括开箱即用的数据库序列化/反序列化。

您所描述的通常称为“EAV”(实体属性值)模式

许多人认为它是应用于关系数据库时的反模式,因为使用它对维护适当的规范化数据和有效的CRUD操作具有重要意义。然而,它确实有它的用途

从LotusNotes到GoogleBigtable,没有SQL数据库使用此主题的变体。因此,如果您不想使用SQL Server,最好的办法可能是研究C#可访问的无SQL数据库,如MongoDB


如果您正在寻找序列化到传统RDBMS的东西,我不知道有任何开源解决方案。在C#中有ExpandoObjects,但我不知道该系统是否包括开箱即用的数据库序列化/反序列化。

您是否尝试过LINQ to SQL,如果这是您正在寻找的类型?您是否尝试过LINQ to SQL,如果这是您正在寻找的类型?是的,我认为EAV是我正在寻找的。具体来说:一个包含EAV模式序列化的实现。是的,我认为EAV就是我要寻找的。具体来说:包括EAV模式序列化的实现。