如果我有如下C#類MyClass
:如何查找C#類的內部屬性?保護?保護內部?
using System.Diagnostics;
namespace ConsoleApplication1
{
class MyClass
{
public int pPublic {get;set;}
private int pPrivate {get;set;}
internal int pInternal {get;set;}
}
class Program
{
static void Main(string[] args)
{
Debug.Assert(typeof(MyClass).GetProperties(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance).Length == 1);
Debug.Assert(typeof(MyClass).GetProperties(
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance).Length == 2);
// internal?
// protected?
// protected internal?
}
}
}
上述編譯代碼是沒有任何斷言失敗運行。 NonPublic返回內部和私有屬性。在BindingFlags上似乎沒有其他輔助功能類型的標誌。
如何獲得只有內部屬性的列表/數組?在相關說明中,但對我的應用程序來說不是必需的,那麼受保護或受保護的內部呢?
另一個選擇是調用propertyInfo.GetGetMethod(true)。即propertyInfo.GetGetMethod(true).IsPrivate。另外請注意,我必須像這樣調用GetProperties才能使其工作GetProperties(BindingFlags.NonPublic | BindingFlags.Instance); GetProperties(BindingFlags.NonPublic)本身不起作用 – cgotberg
@cgotberg是的,我編輯了我的答案以使用'true'參數。否則,它不會給你非公開的訪問者。謝謝。 –