adding
This commit is contained in:
+6
@@ -0,0 +1,6 @@
|
||||
namespace OwnerNumberMigration.ValueParsing;
|
||||
|
||||
public class CommaStringArrayStrategy : IValueParsingStrategy<string[]>
|
||||
{
|
||||
public string[] Parse(string value) => value.Split(",");
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace OwnerNumberMigration.ValueParsing;
|
||||
|
||||
public interface IParsingStrategyFactory
|
||||
{
|
||||
IValueParsingStrategy<T> CreateParsingStrategy<T>(string attribute);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace OwnerNumberMigration.ValueParsing;
|
||||
|
||||
public interface IValueParsingStrategy<out T>
|
||||
{
|
||||
T Parse(string value);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace OwnerNumberMigration.ValueParsing;
|
||||
|
||||
public class ParsingStrategyFactory : IParsingStrategyFactory
|
||||
{
|
||||
private readonly IServiceProvider _services;
|
||||
|
||||
public ParsingStrategyFactory(IServiceProvider services)
|
||||
{
|
||||
_services = services;
|
||||
}
|
||||
|
||||
public IValueParsingStrategy<T> CreateParsingStrategy<T>(string attribute) => attribute switch
|
||||
{
|
||||
"PersonNumber" => (IValueParsingStrategy<T>)_services.GetRequiredService<SingleValueArrayStrategy>(),
|
||||
"PersonNumbers" => (IValueParsingStrategy<T>)_services.GetRequiredService<CommaStringArrayStrategy>(),
|
||||
"OrganizationNumber" => (IValueParsingStrategy<T>)_services.GetRequiredService<SingleValueArrayStrategy>(),
|
||||
"OrganizationNumbers" => (IValueParsingStrategy<T>)_services.GetRequiredService<CommaStringArrayStrategy>(),
|
||||
"AccountNumber" => (IValueParsingStrategy<T>)_services.GetRequiredService<SingleValueStrategy>(),
|
||||
_ => throw new NotImplementedException()
|
||||
};
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
namespace OwnerNumberMigration.ValueParsing;
|
||||
|
||||
public class SingleValueArrayStrategy : IValueParsingStrategy<string[]>
|
||||
{
|
||||
public string[] Parse(string value) => new[] { value };
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace OwnerNumberMigration.ValueParsing;
|
||||
|
||||
public class SingleValueStrategy : IValueParsingStrategy<string>
|
||||
{
|
||||
public string Parse(string value) => value;
|
||||
}
|
||||
Reference in New Issue
Block a user