C# 生成要包含在另一个项目中的.cs文件
我目前正在从事一个项目,其中有几个类需要相互映射。映射是非常基本的,但我总是会浪费很多时间来构建这样的东西:C# 生成要包含在另一个项目中的.cs文件,c#,reflection,C#,Reflection,我目前正在从事一个项目,其中有几个类需要相互映射。映射是非常基本的,但我总是会浪费很多时间来构建这样的东西: void ConvertA1ToA2(A1 arg1, A2 arg2) { arg1.SomeField = arg2.SomeOtherField; //A lot more fields with basic conversions and naming slightly deferring } void ConvertA2ToA1(A2 arg1, A1 arg2)
void ConvertA1ToA2(A1 arg1, A2 arg2)
{
arg1.SomeField = arg2.SomeOtherField;
//A lot more fields with basic conversions and naming slightly deferring
}
void ConvertA2ToA1(A2 arg1, A1 arg2)
{
arg1.SomeOtherField = arg2.SomeField;
//A lot more fields with basic conversions and naming slightly deferring
}
为了避免这种情况,我尝试构建一个工具,它将接收一个DLL路径,搜索带有自定义属性的类,并接收带有类转换名称的参数。在此之后,我将在属性中搜索另一个自定义属性,搜索对应字段。在所有这些之后,我将生成一个.cs,我将手动将其包含在项目中,因此跳过了很多时间进行这些转换
我目前正在成功加载DLL并正确搜索自定义属性,因此我唯一的最后一步是生成.cs文件。有图书馆可以帮我吗?还是应该使用默认的StreamWriter API
编辑:
下面是我将在类中编写的内容的示例:
[ConvertibleClass(TargetClass = "TestDomain.A2")]
public class A1
{
[ConvertibleProperty("Uid")]
public int Id { get; set; }
}
namespace TestDomain
{
public class A2
{
public int Uid { get; set; }
}
}
如果属性具有相同的名称,则可以使用类似AutoMapper的内容。基本上,您可以创建映射(例如,
CreateMap()
)并在代码中的其他位置使用这些映射(Mapper.(一个实例);
)。这可能值得一看。他们通常不会:'(对于AutoMapper,是的,但它只是稍微复杂一点。我会检查它。谢谢!