私はここでstackoverflowやMSドキュメントを含む他のサイトでこれを調べ、出くわしたすべての可能な答えを試しましたが、役に立ちませんでした。わからない、私が間違っていること。プライベートを含むすべてのプロパティを取得しようとする単純なクラス。
ソリューションは、vs2017 15.5.7、c#2017、netFramework4.7.02のコンソールアプリです。
すべてのバインディングフラグの組み合わせを試しました:
(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.Static)
(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static |
BindingFlags.Instance | BindingFlags.DeclaredOnly)
コードを含む:
var listnew = new List<Test>
{
new Test {Name = "Test"}
};
foreach (var item in listnew)
{
var test = item.GetType().GetProperties(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.Static);
foreach (var prop in test)
{
System.Console.WriteLine(prop);
System.Console.WriteLine(prop.GetValue(item));
}
}
クラスは次のとおりです。
public class Test
{
private string _name;
public string Name
{
get => _name;
set => _name = value;
}
}
私はあなたがプロパティたいと思いますし、フィールドには、GetProperties
プライベートバッキングフィールドを返しません_name
が、GetFields
ありません。フィールドとプロパティを連結することができます。どちらもMemberInfo
次のとおりです。
Type t = typeof(Test);
BindingFlags bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
MemberInfo[] allMembers = t.GetProperties(bindingFlags).Cast<MemberInfo>()
.Concat(t.GetFields(bindingFlags))
.ToArray();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加