由於性質是由get
方法和set
方法,你可以重複他們並使用他們get
和set
方法訪問修飾符過濾相關PropertyInfo
S:
var instancePrivate = currentType.GetProperties(BindingFlags.Instance |
BindingFlags.NonPublic)
.Where(x => x.GetMethod.IsPrivate &&
x.SetMethod.IsPrivate);
這些都是有趣的訪問修飾符:
IsPrivate
表示該方法是private
。
IsFamily
表示該方法是protected
。
IsAssembly
表示該方法是internal
。
能夠完美地設置過濾其它方式使用FindMembers
:
public void YourMethod()
{
...
var instancePrivate = currentType.FindMembers(MemberTypes.Property,
BindingFlags.Instance |
BindingFlags.NonPublic,
PrivateMemberFilter, null);
.OfType<PropertyInfo>();
...
}
static readonly MemberFilter PrivatePropertyFilter = (objMemberInfo, objSearch) =>
{
PropertyInfo info = (objMemberInfo as PropertyInfo);
if (info == null)
{
return false;
}
return info.GetMethod.IsPrivate && info.SetMethod.IsPrivate;
};