Skip to content

Intent.CosmosDB.ReflectionHelper has a runtime error when using record type Value Objects #130

@stephanjohnson

Description

@stephanjohnson

What happened?

When setting Value Object Settings -> Value Object Type to record, the ReflectionHelper has a runtime error when attempting to create a new instance during the Intent.CosmosDB.CosmosDBValueObjectDocument.ToEntity method call.

public static T CreateNewInstanceOf<T>()
{
    var constructorInfo = typeof(T).GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Array.Empty<Type>(), null)!;
    var instance = (T)constructorInfo.Invoke(Array.Empty<object>());
    return instance;
}

constructorInfo ends up being null causing this line var instance = (T)constructorInfo.Invoke(Array.Empty<object>()); to throw An object reference is not set to an instance of an object error at runtime when deserializing aggregates from the database.

This is an easy work-around by setting the Object Settings -> Value Object Type to class.

What version of Intent Architect are you using?

4.4.0-beta.6

Additional information

<?xml version="1.0" encoding="utf-8"?>
<modules>
  <module moduleId="Intent.Application.AutoMapper" version="5.1.6" supportedClientVersions="[4.1.0-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.Application.Contracts" version="5.0.11" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.Contracts.Clients" version="5.1.0" supportedClientVersions="[4.3.9-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.Application.DependencyInjection" version="4.1.3" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.DependencyInjection.AutoMapper" version="4.0.2" supportedClientVersions="[4.1.0-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.Application.DependencyInjection.MediatR" version="3.5.15" supportedClientVersions="[4.0.3-pre.6, 5.0.0-a)" />
  <module moduleId="Intent.Application.Dtos" version="4.4.3" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.Dtos.AutoMapper" version="4.0.12" supportedClientVersions="[4.1.0-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.Application.Dtos.Pagination" version="4.1.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.FluentValidation" version="3.10.1" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.FluentValidation.Dtos" version="3.11.1" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.Identity" version="3.5.6-pre.0" supportedClientVersions="[4.1.0-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.Application.MediatR" version="4.3.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.MediatR.Behaviours" version="4.3.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.MediatR.CRUD" version="6.0.23" supportedClientVersions="[4.1.3-pre.2, 5.0.0-a)" />
  <module moduleId="Intent.Application.MediatR.CRUD.Eventing" version="5.0.3" supportedClientVersions="[4.1.0, 5.0.0-a)" />
  <module moduleId="Intent.Application.MediatR.FluentValidation" version="4.8.1" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.ServiceImplementations" version="4.5.9" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Application.ServiceImplementations.Conventions.CRUD" version="5.0.20" supportedClientVersions="[4.1.3-pre.2, 5.0.0-a)" />
  <module moduleId="Intent.Application.ServiceImplementations.CRUD.Eventing" version="1.0.13" supportedClientVersions="[4.1.0-beta.21, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore" version="6.0.7" supportedClientVersions="[4.2.4, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore.Controllers" version="7.1.0" supportedClientVersions="[4.3.9-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore.Controllers.Dispatch.MediatR" version="6.1.0" supportedClientVersions="[4.3.9-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore.Controllers.Dispatch.ServiceContract" version="5.2.11" supportedClientVersions="[4.2.4, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore.HealthChecks" version="2.0.10" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore.Swashbuckle" version="5.1.4" supportedClientVersions="[4.2.4, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore.Swashbuckle.Security" version="4.0.9" supportedClientVersions="[4.2.4, 5.0.0-a)" />
  <module moduleId="Intent.AspNetCore.Versioning" version="1.1.6" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Azure.KeyVault" version="2.0.6" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Common" version="3.7.4" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Common.CSharp" version="3.8.7" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Common.Types" version="4.1.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.CosmosDB" version="1.2.8" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Dapr.AspNetCore" version="2.0.8" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Dapr.AspNetCore.Pubsub" version="2.2.2" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Dapr.AspNetCore.ServiceInvocation" version="2.2.14" supportedClientVersions="[4.0.0-beta.4, 5.0.0-a)" />
  <module moduleId="Intent.DocumentDB.Dtos.AutoMapper" version="1.0.3" supportedClientVersions="[4.1.0,5.0.0)" />
  <module moduleId="Intent.DomainEvents" version="5.0.7" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.DomainServices" version="1.1.7" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Entities" version="5.1.9" supportedClientVersions="[4.3.3, 5.0.0-a)" />
  <module moduleId="Intent.Entities.BasicAuditing" version="1.0.4" supportedClientVersions="[4.1.0,5.0.0)" />
  <module moduleId="Intent.Entities.Repositories.Api" version="5.1.3" supportedClientVersions="[4.1.0, 5.0.0-a)" />
  <module moduleId="Intent.Eventing.Contracts" version="5.1.4" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Eventing.Contracts.DomainMapping" version="4.1.8" supportedClientVersions="[4.0.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Infrastructure.DependencyInjection" version="4.1.3" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.MediatR.DomainEvents" version="5.0.20" supportedClientVersions="[4.1.3-pre.2, 5.0.0-a)" />
  <module moduleId="Intent.Metadata.DocumentDB" version="1.3.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Metadata.RDBMS" version="3.7.0" supportedClientVersions="[4.0.0-beta.7, 5.0.0-a)" />
  <module moduleId="Intent.Metadata.Security" version="1.0.2-pre.1" supportedClientVersions="[4.3.0-a,5.0.0)" />
  <module moduleId="Intent.Metadata.WebApi" version="4.7.2-pre.0" supportedClientVersions="[4.3.9-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Domain" version="3.12.1-pre.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Domain.Events" version="4.3.0" supportedClientVersions="[4.4.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Domain.Services" version="1.2.1" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Domain.ValueObjects" version="3.6.1" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Eventing" version="6.0.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.ServiceProxies" version="5.2.1" supportedClientVersions="[4.1.0-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Services" version="3.9.1" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Services.CQRS" version="5.1.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Services.DomainInteractions" version="2.1.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Modelers.Services.EventInteractions" version="1.2.0" supportedClientVersions="[4.3.0-a,5.0.0-a)" />
  <module moduleId="Intent.Modelers.Types.ServiceProxies" version="5.4.2" supportedClientVersions="[4.4.0-beta.3, 5.0.0-a)" />
  <module moduleId="Intent.Modules.AspNetCore.Logging.Serilog" version="5.1.8-pre.1" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.OpenTelemetry" version="2.2.3" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.OutputManager.RoslynWeaver" version="4.9.1" supportedClientVersions="[4.4.0-a, 5.0.0-a)" />
  <module moduleId="Intent.Security.JWT" version="4.2.5-pre.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
  <module moduleId="Intent.SonarQube" version="1.0.1" supportedClientVersions="[4.3.0-a,5.0.0)" />
  <module moduleId="Intent.ValueObjects" version="4.2.4" supportedClientVersions="[4.1.0-pre.0, 5.0.0-a)" />
  <module moduleId="Intent.VisualStudio.Projects" version="3.8.7-pre.0" supportedClientVersions="[4.3.0-a, 5.0.0-a)" />
</modules>

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions