AutoMapper을 사용하여 내 응용 프로그램의 여러 레이어간에 개체를 매핑합니다.AutoMapper :지도를 추상 클래스에 매핑 -이게 가능합니까?
public interface MyRepo
{
IEnumerable<IRootObject> GetItems(param);
}
IRootObject는 다음과 같습니다 :
public interface IRootObject
{
int Id { get; set; }
DateTime? Date { get; set; }
}
public interface IFirstSubObject : IRootObject
{
string MyFirstProp { get; set; }
}
public interface ISecondSubObject : IRootObject
{
string MySecondProp { get; set; }
}
는 그래서 GetItems()
호출이 실제로에만 IxxxSubObjectItems
의 배열을 반환하는 하나 개의 측면에서 나는이처럼 보이는 인터페이스를 가지고있다. 만드는, 내가 그렇게
AutoMapper.Mapper.CreateMap<IRootObject, MyCustomRoot>
.Include<IFirstSubObject, MyCustomFirstSub>
.Include<ISecondSubObject, MyCustomSecondSub>();
AutoMapper.Mapper.CreateMap<IFirstSubObject, MyCustomFirstSub>();
AutoMapper.Mapper.CreateMap<ISecondSubObject, MyCustomSecondSub>();
처럼 매퍼을 설정 한 지금
public abstract class MyCustomRoot
{
protected MyCustomRoot(){}
public int Id { get; set; }
public DateTime? Date { get; set; }
}
public class MyCustomFirstSub : MyCustomRoot
{
public MyCustomFirstSub() : base() {}
public string MyFirstProp { get; set; }
}
public class MyCustomSecondSub : MyCustomRoot
{
public MyCustomSecondSub() : base() {}
public string MySecondProp { get; set; }
}
하지만 "추상 클래스를 생성 할 수 없습니다"(점점 MapperExceptions을 유지 : 다른 측면 구조에 은 다음과 같습니다 감각). 또한 AssertConfigurationIsValid
이라고 부르며이 코드를 전달합니다.
MyCustomRoot
클래스를 추상화하지 않으면 매핑이 작동하지만 MyCustomRoot
개체 목록이 표시되는 반면 실제로 나중에이 유형을 사용하는 팩터가 있기 때문에 실제로 MyCustomxxxSub
의 목록을 갖고 싶습니다. 올바른 UI를 생성하려면 ...
나는이 사람이 올바른 방향으로 나를 가리킬 수 있기를 바랍니다!
감사합니다.
질문에서 코드와 다른 점에 대해 자세히 설명해 주실 수 있습니까? 나는이 시도했지만 여전히 "추상 클래스를 만들 수 없습니다"예외가 ... – guillaume31
좋아, 그것은 버전 4.x 작동하지 않지만 3.2 않습니다 보인다. 기묘한. – guillaume31