使用反射来创建受保护类的实例



有人能向我解释一下Activator.CreateInstance方法是如何创建受保护类的实例的吗?

public abstract class File
{
    public string Name {get; set;}
}
public class ExcelFile : File
{
    protected ExcelFile()
    {
    }
}

无法通过调用ExcelFile file=new 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来返回新对象,以便更好地了解它的工作原理。

Reflection不关心访问修饰符

相关内容

  • 没有找到相关文章

最新更新