我有两个班级:
public class TestClass1
{
public int TestInt { get; set; }
public void TestMethod()
{
// Do something
}
}
public class TestClass2
{
public int TestInt { get; set; }
public void TestMethod()
{
// Do something
}
}
我想创建可以用于这两个类的接口。最简单的解决方案是在TestClass1和TestClass2上实现接口,但我不能访问这些类的实现(外部dll)。我想知道我是否可以创建新界面并使用AutoMapper将TestClass1和TestClass2映射到ITestInterface:
public interface ITestInterface
{
int TestInt { get; set; }
void TestMethod();
}
答案 0 :(得分:1)
你说你需要将“TestClass1和TestClass2”映射到ITestInterface,但是你需要一个类的实例来映射,因为你不能创建一个接口的实例。
我假设你试图通过将它们转换为相同的接口来交替处理这些类。如果是这样,Automapper不是您应该关注的内容 - 请参阅此question on stack-overflow以获取有关如何管理类的一些详细信息,就好像它们都实现相同的接口一样(即使您无法访问源代码)码)。
答案 1 :(得分:1)
您无法将方法映射为目标,只能映射到源(使用自定义投影):
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeValue,
opt => opt.MapFrom(src => src.GetSomeValue()))
但绝对没有办法将void
方法“映射”到另一个void
方法。它没有意义;映射涉及从一个地方读取并且写入到另一个地方,并且您无法从void
方法“读取”值。