创建可以映射到任何类的泛型类,而不需要知道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?

创建可以映射到任何类的泛型类,而不需要知道c#中类有多少成员

有一个非常流行的类库,称为"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();