Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成要包含在另一个项目中的.cs文件_C#_Reflection - Fatal编程技术网

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,是的,但它只是稍微复杂一点。我会检查它。谢谢!