C#C
C#13mo ago
joo

Source code generation not working with partial record, only with partial class

Using a basic incremental source code generator to generate some serializer-like functionality.


c#
[Generators.Pkt]
public partial record/class ChatMsgReq
{
    public int Ticks { get; set; }
    public required string Msg { get; set; }
    public bool OnlyBalloon { get; set; }
}


Generated Code:

  • Record:
    ```c#
// <auto-generated/>

using System;
using System.Collections.Generic;

using A.Net;

namespace A.Proto;

public partial record ChatMsgReq : IDecodePacket<ChatMsgReq>, IEncodePacket
{
public static ChatMsgReq DecodePacket(ref PacketReader r)
{
return new ChatMsgReq
{
Ticks = r.ReadInt(),
Msg = r.ReadString(),
OnlyBalloon = r.ReadBool(),
};
}

public void EncodePacket(ref PacketWriter w)
{
w.WriteInt(Ticks);
w.WriteString(Msg);
w.WriteBool(OnlyBalloon);
}
}
* Class:
c#
// <auto-generated/>

using System;
using System.Collections.Generic;

using A.Net;

namespace A.Proto;

public partial class ChatMsgReq : IDecodePacket<ChatMsgReq>, IEncodePacket
{
public static ChatMsgReq DecodePacket(ref PacketReader r)
{
return new ChatMsgReq
{
Ticks = r.ReadInt(),
Msg = r.ReadString(),
OnlyBalloon = r.ReadBool(),
};
}

public void EncodePacket(ref PacketWriter w)
{
w.WriteInt(Ticks);
w.WriteString(Msg);
w.WriteBool(OnlyBalloon);
}
}`` With class I can access DecodePacket and EncodePacket just fine, however for the record I'm unable to access It. Also If I copy the partial record without any source code just below the original record` It works fine aswell.

Any Idea why this isn't working for records?
Was this page helpful?