Creating Asset Types

POCO

public class MyAsset
{
  // ...
}

Implements IAsset

public class MyAsset : IAsset
{
  // ...
}

Subclass of AssetBase

public class MyAsset : AssetBase
{
}

Subclass of AssetBase<AssetType> (Concrete)

public class MyAsset : AssetBase<MyAsset>
{
}

Subclass of AssetBase<AssetType> (Interface)

public interface IMyAsset { }

public class MyAsset : AssetBase<IMyAsset>, IMyAsset
{
}