System.Runtime.InteropServices.DllImportAttribute.BestFitMapping Field

Enables or disables best-fit mapping behavior when converting Unicode characters to ANSI characters.

Syntax

public bool BestFitMapping

Remarks

If true, best-fit mapping behavior is enabled; otherwise, best-fit mapping is disabled. The DllImportAttribute.BestFitMapping field is true by default. Settings for this field override the any level settings for the System.Runtime.InteropServices.BestFitMappingAttribute attribute.

The common language runtime converts to ANSI characters any managed Unicode characters passed to an unmanaged method executing on Windows 98 or Windows Me. Best-fit mapping enables the interop marshaler to provide a close-matching character when no exact match exists. For example, the marshaler converts the Unicode copyright character to 'c' for unmanaged methods that accept ANSI characters. Some characters lack a best-fit representation; these characters are called unmappable. Unmappable characters are usually converted to the default '?' ANSI character.

Note:

Certain Unicode characters are converted to dangerous characters, such as the backslash '\' character, which can inadvertently change a path. By setting the DllImportAttribute.ThrowOnUnmappableChar field to true, you can signal the presence of an unmappable character to the caller by throwing an exception.

Note:

You cannot change the default values provided by the DllImportAttribute.BestFitMapping and DllImportAttribute.ThrowOnUnmappableChar fields when passing a managed array whose elements are ANSI Chars or LPSTRs to an unmanaged safe array. Best-fit mapping is always enabled and no exception is thrown. Be aware that this combination can compromise your security model.

Requirements

Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Assembly Versions: 1.0.5000.0, 2.0.0.0, 4.0.0.0