2

実行時に型のみを知っている汎用メソッドを呼び出し、返された型でメソッドを呼び出すにはどうすればよいですか? 私は多くの例を見てきましたが、うまくいかないようです。

これは私がこれまでに持っているものです。

public interface IDataMapper<TEntity> where TEntity : IEntity
{
    void Update(TEntity entity);
}

public IDataMapper<TEntity> GetMapper<TEntity>() where TEntity : IEntity
{
    // Return something of type IDataMapper<TEntity>
}

foreach (IEntity entity in _dirtyObjects)
{
    MethodInfo method = typeof(MapperFactory).GetMethod("GetMapper");
    MethodInfo generic = method.MakeGenericMethod(entity.GetType());

    generic.Invoke(_mapperFactory, null);
    // I now want to call the Update() method
    // I have tried to cast to IDataMapper<IEntity> which results in a null ref ex
}

アドバイスをありがとう。

4

1 に答える 1

4

リフレクションで作業を続ける必要があります。

object dataMapper = generic.Invoke(_mapperFactory, null);
method = dataMapper.GetType().GetMethod("Update");
method.Invoke(dataMapper, new object[] {entity});
于 2012-09-27T23:23:42.113 に答える