0

我有:

  • 类字段的名称
  • 包含该字段的类实例

类字段“可能”是:

  • 我想通过反射直接设置的字段
  • 一个我不想设置的 List 实例,因为我不想为它分配一个新的 List 实例,而是想使用“添加”方法添加。

问题:我在包含对象中没有 List 实例的实际对象。

一些示例代码来说明问题:

class Target
{
    FieldInfo m_FieldInfo;
    MethodInfo m_MethodInfo;
    object m_Target;

    public Target( string nameOfTargetField, object containingObject )
    {
        m_Target = containingObject;
        Type type = containingObject.GetType();
        BindingFlags bindingFlag = BindingFlags.Public | BindingFlags.Instance;
        m_FieldInfo = type.GetField( nameOfTargetField, bindingFlag );

        type = m_FieldInfo.FieldType;
        m_MethodInfo = type.GetMethod( "Add" );
    }

    public void Set( object value )
    {
        if (m_MethodInfo != null) {
            object[] parametersArray = new object[] { value };
            // This obviously will not work, as m_Target is the containing object,
            // no the List<T> instance contained within it:
            m_MethodInfo.Invoke( m_Target, parametersArray );
        } else if (m_FieldInfo != null) {
            m_FieldInfo.SetValue( m_Target, value );
        }
    }
}

有什么建议么?

谢谢!

4

0 回答 0