我正在尝试创建一个类的新实例,该实例看起来只有两个构造函数,这两个构造函数都是内部的。
可以在以下链接中找到此类的代码: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对象。
答案 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});