1

我有两节课:

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();
}
4

2 回答 2

1

您说您需要将“TestClass1 和 TestClass2 映射到 ITestInterface”,但是您需要一个类的实例来映射,因为您无法创建接口的实例。

我假设您正试图通过将它们转换为相同的接口来互换处理这些类。如果是这样 Automapper 不是您应该查看的内容 - 请参阅stack-overflow 上的这个问题以获取有关如何管理将类视为它们都实现相同接口的一些详细信息(即使您无权访问源代码代码)。

于 2010-04-22T13:39:08.247 回答
1

您不能映射到作为目标的方法,只能映射到(使用自定义投影):

Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeValue, 
        opt => opt.MapFrom(src => src.GetSomeValue()))

但是绝对没有办法将一种方法“映射”void到另一种void方法。这真的没有意义。映射涉及从一个地方读取并写入另一个地方,您不能从void方法中“读取”一个值。

于 2010-04-22T13:40:31.237 回答