创建可以映射到任何类的泛型类,而不需要知道c#中类有多少成员
本文关键字:成员 多少 不需要 映射 任何类 泛型类 创建 | 更新日期: 2023-09-27 18:17:41
我想从任何类创建一个泛型类,它将映射到该类中的所有成员。假设我有以下两个类,它们有不同数量的属性
class Data
{
bool IsChecked{get;set;}
string Name{get;set;}
}
和一个类似
的类Class Test
{
bool IsChecked{get;set;}
string TestName{get;set;}
string TestProblem{get;set}
string TestSolution
}
现在我想创建一个类,它将是泛型的,它将在运行时映射上面类的属性。
class Generic<T>
{
//This class should map any of the above classes with all properties.
}
可以在c#中创建这样的类吗?和我可以从这个通用类绑定属性到XAML在wpf?
有一个非常流行的类库,称为"Automapper",您可以轻松地将其添加到解决方案中并获得所需的功能。它甚至会映射对象列表,更不用说它会忽略所有不存在的字段。是的,你可以在xaml中绑定任何你想要的对象。您可以创建适合您的对象类型的自己的模板。或者您可以使用标准的xaml模板。你可以用你最喜欢的搜索引擎找到automapper。
就是这么简单
public class Generic<T>
{
public System.Reflection.PropertyInfo[] GetAllProperties()
{
return typeof(T).GetProperties();
}
}
使用1。
var item = new Generic<Data>();
item.GetAllProperties();
2。
typeof(Data).GetProperties();
3。在运行时根据类名动态获取属性
System.Reflection.Assembly.GetExecutingAssembly().GetType("YOURNAMESPACE.YOURCLASSNAME").GetProperties();