Skip to content

ForType Settings #48

@Stalso

Description

@Stalso

Hello. I have some missunderstanding. I have example code

    public class SourceClass
    {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
    }
    public class DestClass
    {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
    }
    private void MappingTest()
    {
        var sourceItem = new SourceClass()
        {
            A = "A source",
            B = "B source",
            C = "C source",
        };

        TypeAdapterConfig<SourceClass, DestClass>.NewConfig().Map(dest => dest.A,
          src => string.Format("{0} {1}", src.A, "Add something To A"));

        // This mapping gives:
        // firstResult.A =  "A source Add something To A"
        // firstResult.B = "B"
        // firstResult.C = "C"
        var firstResult = TypeAdapter.Adapt<DestClass>(sourceItem);

        // This config should extend previous config
        TypeAdapterConfig<SourceClass, DestClass>.ForType().Map(dest => dest.C,
            src => string.Format("{0} {1}", src.C, "Add something To C"));

        // This mapping also gives:
        // secondResult.A = "A source Add something To A"
        // secondResult.B = "B"
        // secondResult.C = "C"
        // But It should give
        // secondResult.A = "A source Add something To A"
        // secondResult.B = "B"
        // secondResult.C = "C Add something To C"
        var secondResult = TypeAdapter.Adapt<DestClass>(sourceItem);

    }

As you see, second ForType config is not applied. I resolved this by calling on second (ForType) config Compile() method. Is it correct?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions