0

みんな私は次のループを持っています、そしてもしリストなら私は再びループしなければなりません、ここまでは大丈夫ですが、この別のループの中で私は問題を抱えています。このPropretyInfoのオブジェクトをループしてこの値を取得する必要があるため、ここでハード解析を試みました:

(List<ItemDeMescla>)objeto.GetValue(objeto, null)

しかし、それは例外を投げていました。それを解析して動作させる方法はありますか?

foreach (PropertyInfo objeto in processo.GetType().GetProperties())
{
    corpoEmail += CriarLinhaEmail(objeto.Name, Convert.ToString(objeto.GetValue(processo, null)), false);

    if (objeto.PropertyType.IsGenericType && (objeto.PropertyType.GetGenericTypeDefinition() == typeof(System.Collections.Generic.List<>)))
    {
        List<ItemDeMescla> itensMescla = (List<ItemDeMescla>)objeto.GetValue(objeto, null);
        foreach (ItemDeMescla item in itensMescla)
        {
            tabelasAux.Add(CriarTabelaInternaEmail<ItemDeMescla>(item, objeto.Name));
        }
    }
}

エラー スタック:

    at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
   at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
   at SACG.Services.Integracao.Integracao.Utils.MontarCorpoEmail[T](T processo, String mensagem) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\Integracao\Utils.cs:line 176
   at SACG.Services.Integracao.Integracao.Utils.EnviarEmail[T](T processo, Int32 codigoDaUnidade, String mensagem, String assunto) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\Integracao\Utils.cs:line 114
   at SACG.Services.Integracao.Integracao.IntegracaoDaExpedicao.SalvarExpedicao(ExpedicaoGraos expedicaoDto, Usuario usuarioLogado) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\Integracao\IntegracaoDaExpedicao.cs:line 111
   at SACG.Services.Integracao.ExpedicaoDeGraos.RegistrarExpedicao(ExpedicaoGraos expedicao) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\ExpedicaoDeGraos.asmx.cs:line 104
4

2 に答える 2

2

PropertyInfo の代わりに、オブジェクトの値を取得してみてください。

(List<ItemDeMescla>)objeto.GetValue(processo, null)
于 2013-04-18T13:55:19.637 に答える
1

試す

objeto.GetValue(processo, null)

それ以外の

objeto.GetValue(objeto, null)
于 2013-04-18T13:52:01.960 に答える