通过反射c#调用带有参数的方法



方法从数据库返回记录。

    public T Find(params object[] primaryKeys)
    {
        var dbSet = _sessionContext.Set<T>() as DbSet<T>;
        return dbSet != null ? dbSet.Find(primaryKeys) : null;
    }

我正在尝试通过反射呼叫

var methodCreateReadRepositoryEntity = 
     typeof(IRepositoryFactory)
    .GetMethod("CreateReadRepository")
    .MakeGenericMethod(entityMetadata.GetEntityType());
var entityReadRepository = 
     methodCreateReadRepositoryEntity
    .Invoke(_repositoryFactory, new object[] { _sessionMarketContext });
List<object> keys = new List<object>();
keys.Add(value);
var methodEntityGet = 
    entityReadRepository.GetType().GetMethod("Find", new Type[] { typeof(object[])});
var fromRepo = 
    methodEntityGet.Invoke(entityReadRepository, new object[]{new []{ keys.ToArray()[0]}});

value为Guid。这里是error

一个主键值的类型与实体中定义的类型不匹配。异常已被调用的目标抛出。

最后一行应该如下所示。您需要明确数组类型,并且不需要创建List

var fromRepo = 
    methodEntityGet.Invoke(entityReadRepository, new object[]{new object []{value}});

相关内容

  • 没有找到相关文章

最新更新