我有几个输入结构,我需要将它们转换为其他结构,以便将其传递给我的方法。
struct Source1
{
public float x1;
public float x2;
public float x3;
}
struct Source2
{
public float x1;
public float x3;
public float x2;
public float x4;
}
struct Target
{
public float x1;
public float x2;
public float x3;
}
我确信源结构有必填字段(类型和名称很重要)但该字段的偏移量未知。此外,源结构可能包含一些我不需要的额外字段。
如何将所需字段从源结构复制到目标结构。我需要尽快完成。
在 C 中有一个非常简单的方法可以解决这类问题。
#define COPY(x, y) \
{\
x.x1 = y.x1;\
x.x2 = y.x2;\
x.x3 = y.x3;\
}
我正在考虑获取一组字段,然后使用其名称作为键获取字段的值,但对我来说这似乎是一个缓慢的解决方案。
它详细说明了使用implicit operators
哪种方法可以考虑。
一些示例代码:
using System;
namespace Test
{
struct Source1
{
public float x1;
public float x2;
public float x3;
public static implicit operator Target(Source1 value)
{
return new Target() { x1 = value.x1, x2 = value.x2, x3 = value.x3 };
}
}
struct Target
{
public float x1;
public float x2;
public float x3;
}
public class Program
{
static void Main(string[] args)
{
var source = new Source1() { x1 = 1, x2 = 2, x3 = 3 };
Target target = source;
Console.WriteLine(target.x2);
Console.ReadLine();
}
}
}
另一种选择是使用AutoMapper。不过性能会比较慢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句