Если это internal
для сборки, которая не принадлежит вам, и конструктор помечен как private
, автор сборки очень старается удержать вас от создания объекта.
Ниже очень плохо, потому что вы полагаетесь на закрытые уроки и методы, которые могут измениться без предварительного уведомления.
Добавлено: System.ServiceModel.Channels.SelfSignedCertificate
- это класс internal
, который я пытаюсь использовать
Не делайте этого . Структура может измениться под вами в мгновение ока, разрушая ваш код и всю вашу тяжелую работу.
Тем не менее, вы могли бы сделать это:
MethodInfo method = Type.GetType(assemblyQualifiedName).GetMethod("Create");
ABC o = (ABC)method.Invoke(null, new[] { "test" });
Это вызывает метод static
Create
. Другой вариант -
MethodInfo method = Type.GetType(assemblyQualifiedName).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null,
new[] { typeof(string) },
null
);
ABC o = (ABC)method.Invoke(new[] { "test" });
, который использует отражение для загрузки конструктора, который принимает string
в качестве параметра.
Простой способ получить квалифицированное для сборки имя:
string name = typeof(somePublicType).Assembly.GetType("Namespace.ABC");
, где somePublicType
- тип, который является общедоступным и находится в той же сборке, что и ABC
.