簡體   English   中英

通過反射C#在參數中使用參數調用方法

[英]call method with params in arguments through reflection 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]}});

值是Guid。 我有錯誤

主鍵值之一的類型與實體中定義的類型不匹配。 調用的目標已引發異常。

您的最后一行應如下所示。 您需要明確使用數組類型,並且無需創建List

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM