Может кто-нибудь объяснить мне, как метод Activator.CreateInstance может создавать экземпляры защищенного класса?
public abstract class File
{
public string Name {get; set;}
}
public class ExcelFile : File
{
protected ExcelFile()
{
}
}
Невозможно создать новый экземпляр объекта, вызвав Файл ExcelFile = новый ExcelFile ();
«ExcelFile» недоступен из-за уровня защиты
Однако его можно создать с помощью:
Type type = Type.GetType("ConsoleApplication.ExcelFile");
object o = Activator.CreateInstance(type, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance, null, new object[0], CultureInfo.InvariantCulture);
Приведенный выше код был извлечен из метода BCL WebRequest.Create () и хотел бы узнать, какие параметры в Activator.CreateInstance позволяют отражению создавать экземпляр защищенного класса?Я планирую использовать Activator.CreateInstance в классе фабрики для возврата новых объектов, поэтому хотел бы лучше понять, как он работает.