---
title: "Class ModelComponent | Customer's Canvas On-Premises"
canonical: "https://customerscanvas.com/docs/on-premises/design-atoms-cs/reference/api/Aurigma.DesignAtoms.Model/ModelComponent/"
---

# Class ModelComponent

> **Inheritance:** `System.Object` -> ModelComponent

###### **Namespace**: [Aurigma.DesignAtoms.Model](https://customerscanvas.com/docs/on-premises/design-atoms-cs/reference/api/Aurigma.DesignAtoms.Model.md)

###### **Assembly**: Aurigma.DesignAtoms.Model.dll

```csharp title="Syntax"
public abstract class ModelComponent : ICloneable
```

## Implements

* `System.ComponentModel.INotifyPropertyChanged`
* `System.ICloneable`

## Inherited Members

* `System.Object.Equals(System.Object,System.Object)`
* `System.Object.ReferenceEquals(System.Object,System.Object)`
* `System.Object.GetType`
* `System.Object.MemberwiseClone`

## Constructors

### ModelComponent

```csharp
protected ModelComponent(string id = null, string name = "")
```

## Properties

### Version

```csharp
public string Version { get; }
```

### Id

```csharp
public string Id { get; set; }
```

### Name

```csharp
public virtual string Name { get; set; }
```

## Methods

### GenerateId

```csharp
public static string GenerateId()
```

##### Returns

`System.String`

### ToString

```csharp
public override string ToString()
```

##### Returns

`System.String`

##### Overrides

* `System.Object.ToString`

### Equals

```csharp
protected bool Equals(ModelComponent other)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| [Aurigma.DesignAtoms.Model.ModelComponent](https://customerscanvas.com/docs/on-premises/design-atoms-cs/reference/api/Aurigma.DesignAtoms.Model/ModelComponent.md) | *other* |  |

##### Returns

`System.Boolean`

### Equals

```csharp
public override bool Equals(object obj)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Object` | *obj* |  |

##### Returns

`System.Boolean`

##### Overrides

* `System.Object.Equals(System.Object)`

### GetHashCode

```csharp
public override int GetHashCode()
```

##### Returns

`System.Int32`

##### Overrides

* `System.Object.GetHashCode`

### DeepClone&lt;TItem&gt;

```csharp
public virtual TItem DeepClone<TItem>(TItem clone = null, bool keepIds = false)
    where TItem : ModelComponent
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `<TItem>` | *clone* |  |
| `System.Boolean` | *keepIds* |  |

##### Returns

`<TItem>`

### Clone

```csharp
public object Clone(bool keepIds)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.Boolean` | *keepIds* |  |

##### Returns

`System.Object`

### Clone

```csharp
public object Clone()
```

##### Returns

`System.Object`

### OnPropertyChanged

```csharp
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged(string propertyName = null)
```

##### Parameters

| Type | Name | Description |
|:---|:---|:---|
| `System.String` | *propertyName* |  |

## Fields

### UserTagKey

```csharp
public static string UserTagKey
```

### WarningTagKey

```csharp
public static string WarningTagKey
```

### Tags

```csharp
public readonly Dictionary<string, object> Tags
```

## Events

### PropertyChanged

```csharp
public event PropertyChangedEventHandler PropertyChanged
```
