c# - 你能在 C# 中动态地向对象添加属性吗?

标签 c#

我有一个 FooBar 类。我在我的整个代码库中都使用了这个类,并希望保持它的干净。我目前正在以这样一种方式使用 FooBar,即我有一个 FooBar 列表和一个值列表。我需要遍历列表并将值与 FooBar 元素匹配。将有多个值关联到单个 FooBar。有什么方法可以临时将列表添加到我的 FooBar 对象中,这样我就可以将值附加到该列表中吗?像这样:

List <FooBar> myFoos = GetFoos();
List <int> values = GetValues();
foreach (var value in values)
{
    foreach (var foo in myFoos)
    {
        if (CheckMatch(foo, value))
        {
            if (foo.tempList == null)
            {
                foo.tempList = new List<int>();
            }
            foo.tempList.Add(value);
        }
    }
}
//...
//do things with the list of values on each FooBar

现在我只是创建一个新的 > 字典。创建字典是执行此操作的正确方法,还是我可以做类似于我在上面发布的内容?

最佳答案

您可以使用 ExpandoObject 为此,这实际上只不过是一个 Dictionary<string, object> .

dynamic instance = new ExpandoObject();
instance.tempList = new List<int>();

instance.tempList.Add(1);

当然,使用临时 Dictionary<FooBar, List<int>>就是这么简单。

关于c# - 你能在 C# 中动态地向对象添加属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24144496/

相关文章:

c# - DataTable 的新 DataView 与 DefaultView

c# - Task.Run 如何受 CPU 内核限制?

c# - 在 Eclipse Juno 中使用 Axis 1.1

c# - 更新空行,该行没有任何唯一信息

c# - 使用 C# 将空间转换为 "+"

c# - 如何在 XAML 页面之间传递值(参数)?

c# - 如何从 C# 中的 HTTP Post 访问 header 信息?

c# - 有没有办法序列化 .Net MailMessage 对象

c# - 仅在第一个 http 请求中获得空响应 Windows Phone 8

c# - 在 C# 中获取通用标志枚举值