You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
871 B
30 lines
871 B
using StabilityMatrix.Core.Attributes; |
|
using StabilityMatrix.Core.Models.Packages; |
|
|
|
namespace StabilityMatrix.Core.Helper.Factory; |
|
|
|
[Singleton(typeof(IPackageFactory))] |
|
public class PackageFactory : IPackageFactory |
|
{ |
|
/// <summary> |
|
/// Mapping of package.Name to package |
|
/// </summary> |
|
private readonly Dictionary<string, BasePackage> basePackages; |
|
|
|
public PackageFactory(IEnumerable<BasePackage> basePackages) |
|
{ |
|
this.basePackages = basePackages.ToDictionary(x => x.Name); |
|
} |
|
|
|
public IEnumerable<BasePackage> GetAllAvailablePackages() |
|
{ |
|
return basePackages.Values; |
|
} |
|
|
|
public BasePackage? FindPackageByName(string? packageName) |
|
{ |
|
return packageName == null ? null : basePackages.GetValueOrDefault(packageName); |
|
} |
|
|
|
public BasePackage? this[string packageName] => basePackages[packageName]; |
|
}
|
|
|