使用内部构造函数实例化类

时间:2019-06-04 01:30:26

标签: c# asp.net constructor

我正在尝试创建一个类的新实例,该实例看起来只有两个构造函数,这两个构造函数都是内部的。

可以在以下链接中找到此类的代码:link

本质上,这是构造函数的代码:

    //Automatic
    internal CommandBuilder(ModuleBuilder module)
    {
        Module = module;

        _preconditions = new List<PreconditionAttribute>();
        _parameters = new List<ParameterBuilder>();
        _attributes = new List<Attribute>();
        _aliases = new List<string>();
    }
    //User-defined
    internal CommandBuilder(ModuleBuilder module, string primaryAlias, Func<ICommandContext, object[], IServiceProvider, CommandInfo, Task> callback)
        : this(module)
    {
        Discord.Preconditions.NotNull(primaryAlias, nameof(primaryAlias));
        Discord.Preconditions.NotNull(callback, nameof(callback));

        Callback = callback;
        PrimaryAlias = primaryAlias;
        _aliases.Add(primaryAlias);
    }

我迷失于尝试创建一个新的CommandBuilder对象。

1 个答案:

答案 0 :(得分:0)

实际上,您可以使用反射来做到这一点:

找到第一个(或任何一个)定义的构造器

var constructor = typeof (InternalConstructorClass)
     .GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic).First();

如果没有参数,则通过传递null来调用构造函数:

var instance = constructor.Invoke(null);

否则,传递如下参数:

var instance = constructor.Invoke(new object[]{param1,param2});