Files
ZuneModdingHelper/ZuneModCore/IModFactory.cs
T

27 lines
693 B
C#
Raw Normal View History

2024-05-21 20:54:02 -05:00
using Microsoft.Extensions.DependencyInjection;
using System;
namespace ZuneModCore;
public interface IModFactory<out T> where T : Mod
{
ModMetadata Metadata { get; }
T Create(IServiceProvider services);
}
/// <summary>
/// A base class that implements <see cref="IModFactory{T}"/> with
/// <see cref="Create(IServiceProvider)"/> using dependency injection.
/// </summary>
/// <typeparam name="T"></typeparam>
public abstract class DIModFactoryBase<T> : IModFactory<T> where T : Mod
{
public abstract ModMetadata Metadata { get; }
public virtual T Create(IServiceProvider services)
{
return ActivatorUtilities.CreateInstance<T>(services, Metadata);
}
}