Создание класса с внутренним конструктором - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь создать новый экземпляр класса, который имеет только два конструктора, каждый из которых является внутренним.

Код для этого класса можно найти по этой ссылке: ссылка

По сути, вот как выглядит код для конструктора:

    //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 голосов
/ 18 июня 2019

На самом деле вы можете сделать это, используя отражение:

Найти первый (или любой другой) определенный конструктор

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

Вызвать конструктор, передав ноль, если он без параметров, как это:

var instance = constructor.Invoke(null);

В противном случае передайте параметры следующим образом:

var instance = constructor.Invoke(new object[]{param1,param2});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...