首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >集合上的NBuilder使用率

集合上的NBuilder使用率
EN

Stack Overflow用户
提问于 2014-09-13 05:08:31
回答 1查看 415关注 0票数 1

我在这里找到了NBuilder的这个实现:https://gist.github.com/markgibaud/4150878

在我需要在里面添加一些集合之前,它就像一个护身符。

例如:

代码语言:javascript
复制
public class UserDto
{
    public string UserName {get;set;}
    public List<AddressDto> Addresses {get;set;} //this will be null
}

public class AddressDto
{
    public string Street {get;set;}
    //...
}

我想用至少一条记录填充任何集合。

我最终得到了这段代码:

代码语言:javascript
复制
private static object BuildObjectList(Type type)
    {
        try
        {
            var builderClassType = typeof (Builder<>);
            Type[] args = {type};
            var genericBuilderType = builderClassType.MakeGenericType(args);
            var builder = Activator.CreateInstance(genericBuilderType);

            var createListOfSizeMethodInfo = builder.GetType().GetMethod("CreateListOfSize", new[] {typeof (int)});

            var objectBuilder = createListOfSizeMethodInfo.Invoke(builder, new object[] {1});
            var buildMethodInfo = objectBuilder.GetType().GetMethod("Build");
            return buildMethodInfo.Invoke(objectBuilder, null);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
            return null;
        }
    }

但是,当我尝试调用build方法时,也会出现一些问题。

EN

回答 1

Stack Overflow用户

发布于 2014-10-17 21:52:31

您尝试调用的Build方法看起来需要参数,但是在调用buildMethodInfo.Invoke(objectBuilder, null);时,您没有向它传递任何东西

抛出的异常是TargetParameterCountException。来自MSDN:

当调用的参数数量与预期数量不匹配时引发的异常。

您应该使用调试器逐步执行代码,并检查正在调用的方法的原型,以了解它需要哪些参数。考虑到您的评论,当以不同的方式调用Build方法(没有向其传递任何参数)时,也会出现同样的问题,这意味着该方法的实现需要一个或多个参数。

或者,您可以尝试静态地调用该方法,而不是通过反射,以确保可以按照Invoke调用它的方式调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25816859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档