Closed amichajlukTisa closed 4 months ago
I switched to prerelease version and now the compiled code looks like that:
v 1.0.0-beta07
using System.Runtime.InteropServices; #nullable disable namespace Common.Entities.Organizers { [StructLayout(LayoutKind.Sequential, Size = 1)] public struct HappeningOrganizerId { } }
Using the last release version the code was: v 0.2.1
using System; using System.ComponentModel; using System.Globalization; using System.Text.Json; using System.Text.Json.Serialization; #nullable disable namespace Common.Entities.Organizers { [TypeConverter(typeof (HappeningOrganizerId.HappeningOrganizerIdTypeConverter))] [JsonConverter(typeof (HappeningOrganizerId.HappeningOrganizerIdSystemTextJsonConverter))] public readonly struct HappeningOrganizerId : IComparable<HappeningOrganizerId>, IEquatable<HappeningOrganizerId> { public static readonly HappeningOrganizerId Empty = new HappeningOrganizerId(Guid.Empty); public Guid Value { get; } public HappeningOrganizerId(Guid value) => this.Value = value; public static HappeningOrganizerId New() => new HappeningOrganizerId(Guid.NewGuid()); public bool Equals(HappeningOrganizerId other) => this.Value.Equals(other.Value); public int CompareTo(HappeningOrganizerId other) => this.Value.CompareTo(other.Value); public override bool Equals(object obj) { return obj != null && obj is HappeningOrganizerId other && this.Equals(other); } public override int GetHashCode() => this.Value.GetHashCode(); public override string ToString() => this.Value.ToString(); public static bool operator ==(HappeningOrganizerId a, HappeningOrganizerId b) { return a.CompareTo(b) == 0; } public static bool operator !=(HappeningOrganizerId a, HappeningOrganizerId b) => !(a == b); private class HappeningOrganizerIdTypeConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { return sourceType == typeof (string) || base.CanConvertFrom(context, sourceType); } public override object ConvertFrom( ITypeDescriptorContext context, CultureInfo culture, object value) { string input = value as string; Guid result; return !string.IsNullOrEmpty(input) && Guid.TryParse(input, out result) ? (object) new HappeningOrganizerId(result) : base.ConvertFrom(context, culture, value); } } public class HappeningOrganizerIdSystemTextJsonConverter : JsonConverter<HappeningOrganizerId> { public override HappeningOrganizerId Read( ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return new HappeningOrganizerId(Guid.Parse(reader.GetString())); } public override void Write( Utf8JsonWriter writer, HappeningOrganizerId value, JsonSerializerOptions options) { writer.WriteStringValue(value.Value); } } } }
Am I doing something wrong?
I was referencing also *.Attributes package and it was causing the issue.
I switched to prerelease version and now the compiled code looks like that:
v 1.0.0-beta07
Using the last release version the code was: v 0.2.1
Am I doing something wrong?