簡體   English   中英

使用反射創建受保護 class 的實例

[英]Using reflection to create instances of a protected class

有人可以向我解釋一下 Activator.CreateInstance 方法如何能夠創建受保護的 class 的實例嗎?

public abstract class File
{
    public string Name {get; set;}
}

public class ExcelFile : File
{
    protected ExcelFile()
    {
    }
}

無法通過調用ExcelFile file = new ExcelFile(); 創建 object 的新實例;

'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 中的哪些參數允許反射創建受保護的 class 的實例?

注意:我計划在工廠 class 中使用 Activator.CreateInstance 來返回新對象,以便更好地了解它是如何工作的。

反射不關心訪問修飾符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM