PacketSupoort 라이브러리에 확장을 위해 Bit를 통한 Byte 생성 방법이 필요했고 @suwoo 님의 FlagsAttribute 의견을 가지고 개발하게되었습니다.
BitSupport 주요 기능
[BitSupportFlags]는 [Flags]를 기반으로 향후 확장 목적으로 만들어졌습니다.
현재 시점에서 Enum의 Value의 값을 넣지 않고 자동 생성을 목적으로 만들어졌습니다.
Enum To Byte
// 기존 Enum값을 Flags형태로 변환합니다
// 변환 된 Flags들을 조합하여 하나의 Byte로 만듭니다.
var MACHINEFlags = MACHINE.POWER.ToFlags() | MACHINE.RIGHT.ToFlags(); // 또는 MACHINEFlags.POWER | MACHINEFlags.RIGHT
byte byteValue = MACHINEFlags.ToByte ();
Byte To Enum
// Byte 데이터를 Enum값으로 변환처리해줍니다.
byte byteValue = 0x05;
var enumData = byteValue.ToEnum<MACHINE> (); // 또는 data.ToEnum<MACHINEFlags>
HasFlags, HasAnyFlags, HasNotFlags 를 통한 Byte 분석
BitSupport 라이브러리 개발기
내가 만들었어요 로 시작되었지만 닷넷 개발자분들의 의견을 수렴하고 다듬어지다보니 Slog의 성향도 보이네요
PacketSupoort 라이브러리 별도 관리 이유
PacketSupoort는 netStandard2.1 기반입니다. BitSupportFlags는 제네레이터 Source Generator 기능을 토대의 기능이기 때문에 합칠 수가 없었고,
프로젝트를 만들고 SourceGeneraor해서 만들어 쓰면 되지 않냐? 라는 생각도 들었지만 단순 BitSupport만 사용하고 싶지 않을까 라는 생각에서
별도 관리를 선택하였습니다.
라이브러리 분개하지 않고
PacketSupoort 라이브러리에서 소스제네레이터 기능을 구현하고자 하였는데
PacketSupoort는 netStandard2.1 기반이기에 불가능해서 BitSupport로 새로 개발하게 되었다… 이런 뜻이였습니다.
위에 정리하면서 내용은 추가했지만 여기에 부연설명해놓겠습니다!
BitSupport는 BitSupportFlags에 한정 된 라이브러리가 아닙니다. PacketSupoort의 PacketBuilder는 Byte들을 직관적 표현한다고 한다면
BitSupport는 Bit LeftShift, RightShift 등 다양한 Bit조작을 통해 Byte 데이터를 만들어내기 위한 라이브러리 입니다.