无法尝试将结构作为Object传递给迭代字段和值的方法

时间:2015-11-27 23:11:37

标签: c#

感激地从其他各个职位上借阅后,我得到了很好的工作:

public string ShowCandle01(ref TYPE_Candle01 Candle)
{
    string S = "";
    foreach (var field in typeof(TYPE_Candle01).GetFields(BindingFlags.Instance |
                BindingFlags.NonPublic |
                BindingFlags.Public))
    {
        S = S + field.Name + ": " + field.GetValue(Candle).ToString() + "\n";
    }
    return S;
}

但我真正想要的是一个迭代任何结构实例的方法,而不明确知道它的名字,如:

public string ShowAnyStruct(ref Object Whatever)

我似乎无法做到这一点。提前感谢您的先进智慧!

2 个答案:

答案 0 :(得分:3)

我认为你想要的是通用方法:

public string ShowAnyStruct<TStruct>(TStruct val) where TStruct: struct
{
    string s = "";
    foreach (var field in typeof(TStruct).GetFields(BindingFlags.Instance |
                                                     BindingFlags.NonPublic |
                                                     BindingFlags.Public))
    {
        s += field.Name + ": " + field.GetValue(Candle).ToString() + "\n";
    }
    return s;
}

当然,没有任何理由将其限制为结构,因此如果删除约束,也可以将其与引用类型一起使用。

答案 1 :(得分:1)

你可以尝试

$(function() {
  $('body').on('click', '.btn-group button', function (e) {
    $(this).addClass('active');
    $(this).siblings().removeClass('active');

    //other things I need to do
  })
});
whatever.GetType().GetFields ....