Невозможно вызвать частный метод для System.Security.Cryptography.X509Certificates.SubjectAlternativeNameBuilder.C#

Место общения программистов C#
Anonymous
Невозможно вызвать частный метод для System.Security.Cryptography.X509Certificates.SubjectAlternativeNameBuilder.

Сообщение Anonymous »

Код: Выделить всё

SubjectAlternativeNameBuilder
не предоставляет метода для добавления атрибута _Registered Id_, поэтому я пытаюсь использовать отражение для достижения своей цели:

Код: Выделить всё

var assembly = typeof(SubjectAlternativeNameBuilder).Assembly;
var generalNameAsnType = assembly.GetType("System.Security.Cryptography.Asn1.GeneralNameAsn");
var generalNameAsn = Activator.CreateInstance(generalNameAsnType);
generalNameAsnType.GetField("RegisteredId", BindingFlags.Instance | BindingFlags.NonPublic)
.SetValue(generalNameAsn, "1.3.6.1.4.1.311.20.2.3");
var methodInfo = typeof(SubjectAlternativeNameBuilder).GetMethod("AddGeneralName");
var san = new SubjectAlternativeNameBuilder();
methodInfo.Invoke(san, \[generalNameAsn\]);
Но я получаю исключение NullReferenceException в последней строке. И по какой-то причине я не могу отладить методInfo.Invoke. Если я попробую, я увижу следующую
информацию об исключении:
Изображение

Как я могу вызвать этот метод с отражением?

Подробнее здесь: https://stackoverflow.com/questions/799 ... rtificates

Вернуться в «C#»