1

我必须在运行时设置一些属性,但我遇到的问题是一些属性有 5 个设置,而另一个可能有 3 或 4 个。有没有一种方法可以创建一个通用类,它可以保存任意数量的设置无需编写多个类的属性?

一个示例是我有一个名为的属性Color,其唯一设置是,Color但在另一种情况下,我有一个Mask名为MaskTypeMask

4

3 回答 3

2

这是一个经典,解决方案实际上取决于您希望如何访问您的属性。
在 ASP.NET 中,缓存使用如下内容:

public class Cache
{
   private Dictionary<string, object> CachedValues;

   public object this [string arg]
   {
       get
       {
           return CachedValues[arg];
       }
   }
}

或者你可以使用Tuple<T1, T2, T3...>

或者您可以使用dynamic匿名类型

于 2012-10-23T14:17:49.383 回答
2

您可能想看看ExpandoObject。它允许您动态添加属性及其值,尽管它确实需要 .NET 4 或更高版本。

于 2012-10-23T14:13:56.317 回答
1

我认为编写代表您的各个对象的各个类总是更好。在我看来,您只会在尝试编写泛型类时产生更多问题。也许看看工厂或适配器模式来决定在不同场景中使用哪些类。

于 2012-10-23T14:15:46.600 回答