# IMetadata

> Marks a type as metadata that can be attached to a locale, a table, a shared key, or a per-locale entry.

## Definition

* **Type:** Interface
* **Namespace:** [Unity.Localization](/engine/6000.7/script-reference/unity/localization.md)
* **Assembly:** UnityEngine.LocalizationRuntimeModule

```csharp
public interface IMetadata
```

## Remarks

Implementations are serialized by reference through [MetadataCollection](/engine/6000.7/script-reference/unity/localization/metadatacollection.md), so each metadata item can carry its own serialized fields, for example a [Comment](/engine/6000.7/script-reference/unity/localization/comment.md) or an [ExcludeEntryFromEditorExport](/engine/6000.7/script-reference/unity/localization/excludeentryfromeditorexport.md) flag. Apply [MetadataAttribute](/engine/6000.7/script-reference/unity/localization/metadataattribute.md) to an implementation to control where it can be attached and how it appears in the editor's "Add Metadata" menu.

Additional Resources: [MetadataCollection](/engine/6000.7/script-reference/unity/localization/metadatacollection.md), [MetadataAttribute](/engine/6000.7/script-reference/unity/localization/metadataattribute.md), [Comment](/engine/6000.7/script-reference/unity/localization/comment.md), [ExcludeEntryFromEditorExport](/engine/6000.7/script-reference/unity/localization/excludeentryfromeditorexport.md)

Implement the interface to define a custom metadata item that carries its own fields.

## Examples

```csharp
using System;
using Unity.Localization;

namespace Unity.Localization.Samples
{
    [Serializable]
    public class IMetadataExample : IMetadata
    {
        public string author;
    }
}
```
