# UxmlFactory<TCreatedType, TTraits>

> Generic base class for UXML factories, which instantiate a VisualElement using the data read from a UXML file.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.UIElements](/engine/6000.5/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule
* **Inherits from:** [BaseUxmlFactory\<T, T>](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2.md)
* **Implements:** [IUxmlFactory](/engine/6000.5/script-reference/unityengine/uielements/iuxmlfactory.md), [IBaseUxmlFactory](/engine/6000.5/script-reference/unityengine/uielements/ibaseuxmlfactory.md)

> **Warning:**
>
> **Deprecated.** UxmlFactory\<TCreatedType, TTraits> is deprecated and will be removed. Use UxmlElementAttribute instead.

```csharp
public class UxmlFactory<TCreatedType, TTraits> : BaseUxmlFactory<TCreatedType, TTraits>, IUxmlFactory, IBaseUxmlFactory where TCreatedType : VisualElement, new() where TTraits : UxmlTraits, new()
```

## Remarks

T0 The type of the element that will be instantiated. It must derive from [VisualElement](/engine/6000.5/script-reference/unityengine/uielements/visualelement.md).

T1 The traits of the element that will be instantiated. It must derive from [UxmlTraits](/engine/6000.5/script-reference/unityengine/uielements/uxmltraits.md).

## Methods

| Method                                                                                  | Description                                                                                 |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| [Create](/engine/6000.5/script-reference/unityengine/uielements/uxmlfactory2/create.md) | Instantiate an object of type `T0` and initialize it by calling `T1` UxmlTraitsInit method. |

## Inheritance

**Inherited Members:**

* [BaseUxmlFactory\<T, T>.AcceptsAttributeBag(IUxmlAttributes, CreationContext)](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/acceptsattributebag.md)
* [BaseUxmlFactory\<T, T>.uxmlName](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/uxmlname.md)
* [BaseUxmlFactory\<T, T>.uxmlNamespace](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/uxmlnamespace.md)
* [BaseUxmlFactory\<T, T>.uxmlQualifiedName](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/uxmlqualifiedname.md)
* [BaseUxmlFactory\<T, T>.uxmlType](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/uxmltype.md)
* [BaseUxmlFactory\<T, T>.canHaveAnyAttribute](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/canhaveanyattribute.md)
* [BaseUxmlFactory\<T, T>.uxmlAttributesDescription](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/uxmlattributesdescription.md)
* [BaseUxmlFactory\<T, T>.uxmlChildElementsDescription](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/uxmlchildelementsdescription.md)
* [BaseUxmlFactory\<T, T>.substituteForTypeName](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/substitutefortypename.md)
* [BaseUxmlFactory\<T, T>.substituteForTypeNamespace](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/substitutefortypenamespace.md)
* [BaseUxmlFactory\<T, T>.substituteForTypeQualifiedName](/engine/6000.5/script-reference/unityengine/uielements/baseuxmlfactory2/substitutefortypequalifiedname.md)
