public IntPtr MarshalManagedToNative(object ManagedObj)
        {
            if (!(ManagedObj is ResourceName))
            {
                throw new ArgumentException(nameof(ManagedObj));
            }
            var name = (ResourceName)ManagedObj;

            if (name.Name != null)
            {
                return(Marshal.StringToCoTaskMemUni(name.Name));
            }
            return(ResourceUnsafeNativeMethods.MAKEINTRESOURCE(name.Id));
        }