public DHCP_OPTION_DATA_ELEMENT_Managed(DHCP_OPTION_DATA_TYPE type, DHCP_BINARY_DATA_Managed dataBinary)
        {
            switch (type)
            {
            case DHCP_OPTION_DATA_TYPE.DhcpBinaryDataOption:
                OptionType = (IntPtr)DHCP_OPTION_DATA_TYPE.DhcpBinaryDataOption;
                Data       = new DHCP_OPTION_DATA_ELEMENT_ManagedValue()
                {
                    DataBinary = dataBinary
                };
                break;

            case DHCP_OPTION_DATA_TYPE.DhcpEncapsulatedDataOption:
                OptionType = (IntPtr)DHCP_OPTION_DATA_TYPE.DhcpEncapsulatedDataOption;
                Data       = new DHCP_OPTION_DATA_ELEMENT_ManagedValue()
                {
                    DataBinary = dataBinary
                };
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type));
            }
        }
        public DHCP_OPTION_DATA_ELEMENT_Managed(DHCP_OPTION_DATA_TYPE type, string dataString)
        {
            switch (type)
            {
            case DHCP_OPTION_DATA_TYPE.DhcpStringDataOption:
                OptionType = (IntPtr)DHCP_OPTION_DATA_TYPE.DhcpStringDataOption;
                Data       = new DHCP_OPTION_DATA_ELEMENT_ManagedValue()
                {
                    DataString = Marshal.StringToHGlobalUni(dataString)
                };
                break;

            case DHCP_OPTION_DATA_TYPE.DhcpIpv6AddressOption:
                OptionType = (IntPtr)DHCP_OPTION_DATA_TYPE.DhcpIpv6AddressOption;
                Data       = new DHCP_OPTION_DATA_ELEMENT_ManagedValue()
                {
                    DataIpv6Address = Marshal.StringToHGlobalUni(dataString)
                };
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type));
            }
        }
 public DHCP_OPTION_DATA_ELEMENT(DHCP_OPTION_DATA_TYPE OptionType, IntPtr DataOffset)
 {
     this.OptionType = OptionType;
     this.DataOffset = DataOffset;
 }