C# 使用反射c获取字段和属性的方法#
我在代码中使用了两个数组:C# 使用反射c获取字段和属性的方法#,c#,reflection,C#,Reflection,我在代码中使用了两个数组: var fields = typeof(MyDtoClass).GetProperties(); var fieldsOfDtoClass = typeof(MyDtoClass).GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance); 但是我使用它来生成一个表,它可能会不同步。如何使用一个数组,但可以在一个位置获取属性,而在另一个位置获取此类标记的字段?我
var fields = typeof(MyDtoClass).GetProperties();
var fieldsOfDtoClass = typeof(MyDtoClass).GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
但是我使用它来生成一个表,它可能会不同步。如何使用一个数组,但可以在一个位置获取属性,而在另一个位置获取此类标记的字段?我应该看看GetMembers还是smth?非常感谢使用类名提供的任何帮助
typeof(YourClass).GetMethod("METHOD_NAME");
typeof(YourClass).GetProperty("PROPERTY_NAME");
使用实例
yourInstance.GetType().GetMethod("METHOD_NAME");
yourInstance.GetType().GetProperty("PROPERTY_NAME");
枚举所有属性
foreach (var property in typeof(YourClass)) {
Console.WriteLine(property);
}
与使用Linq枚举它们的方法相同
typeof(YourClass).GetMethods()
.Select(method => method.Name == "GetType");
请回答您的问题并添加
MyDtoClass
类定义和预期的输出数组MemberInfo[]fieldsAndProps=typeof(MyDtoClass).GetProperties().OfType().Concat(typeof(MyDtoClass).GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance)).ToArray()
这听起来更像是阅读在线文档的练习。“使用它生成一个表,可能会导致不同步”-通过“字段”,您是指数据库列吗?当类发生更改时,是否尝试更新表结构?那就不要重新发明这个复杂的轮子;use Entity Framework Migrations.OP要求的是字段和属性,而不是方法