![](/img/trans.png)
[英]BindingFlags.IgnoreCase not working for Type.GetProperty()?
[英]GetProperty BindingFlags.IgnoreCase wont work without public and Instance in c#
Type t = typeof(T);
t.GetProperty("Company")
如果我寫下面的代碼,它將給出null
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase)
同時,如果我寫這個工作正常。為什么會這樣?
Type t = typeof(T);
t.GetProperty("company", BindingFlags.IgnoreCase|BindingFlags.Public | BindingFlags.Instance)
不帶BindingFlags
的重載有效默認為BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance
BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance
BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance
。 這就是為什么它會在你的第一個片段中找到它。
如果確實指定了BindingFlags
,則必須指定所有相關標志 - 其中包括標志,表示您是否要查看公共成員,是否要查看非公共成員,是否要查看實例成員以及是否想看靜態成員。
當你剛剛指定BindingFlags.IgnoreCase
,你沒有說你想看到任何這些,所以它找不到任何東西。
按設計, Type.GetProperty要求您至少指定靜態或實例:
•您必須指定BindingFlags.Instance或BindingFlags.Static才能獲得返回。
GetProperty(string name)
搜索具有指定名稱的公共屬性 (根據MSDN ),但GetProperty(string, BindingFlags)
使用指定的綁定約束完全按照您的指定搜索指定的屬性 。
當你說BindingFlags.IgnoreCase
,它只是應用了BindingFlag
,而沒有別的。 根據文檔 ,您必須指定BindingFlags.Instance
或BindingFlags.Static
才能獲得返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.