using System.Runtime.InteropServices; using Decal.Interop.Net; namespace Decal.Adapter.NetParser; [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] [ComDefaultInterface(typeof(IMessageMember))] [ProgId("DecalAdapter.MessageMemberWrapper")] [Guid("BD22CFC5-0950-4ab3-9752-5053EE934BE6")] public class MessageMemberWrapper : MessageRootImpl, IMessageMember { public int BeginOffset => Data.mOffset; public int Count => Data.Count; public int EndOffset => Data.mOffset + Data.mLength; public MessageMemberWrapper() { } internal MessageMemberWrapper(MessageStruct msg, MessageWrapper wrapper) : base(msg, wrapper) { } public string get_FieldName(int Index) { return Data.Name(Index); } public byte[] get_RawValue(object vIndex) { return Data.RawValue(Data.ObjectToIndex(vIndex)); } public IMessageMember get_Struct(object vIndex) { int num = Data.ObjectToIndex(vIndex); if (num < 0) { throw new COMHResultException((HResults)(-2147352571)); } return new MessageMemberWrapper(Data.Struct(num), Wrapped); } public object get_Value(object vIndex) { int num = Data.ObjectToIndex(vIndex); if (num >= 0) { return Data.Value(num); } throw new COMHResultException((HResults)(-2147352571)); } }