I’ve got a class (Request
) that I want to convert to another one (Message
) where the properties are of different types. I need to validate that the types are correct and can be parsed correctly, and log when the request is invalid.
How can I use ILogger
in a public static class? Should I just create a public class with a method for the mapping instead?
Request class:
public class Request
{
[Required]
[Range(0, 99)]
public int TillNumber { get; set; }
[Required]
[StringLength(6, MinimumLength = 4)]
public string StoreCode { get; set; }
[Required]
public string ItemNumber { get; set; }
}
Message class:
public class Message
{
public int TillNumber { get; set; }
public int StoreCode { get; set; }
public ItemCode Item { get; set; }
}
Extension class:
public static class DirectoryEnquiryExtensions
{
public static Message ToMessage (this Request request)
{
var tillNumber = request.TillNumber;
var storeCode = request.StoreCode;
var successfullyParsed = int.TryParse(request.StoreCode, out int storeCode);
if (!successfullyParsed)
{
logger.LogError("Not a valid store code {0}", request.StoreCode);
return null;
}
ItemCode itemCode;
if (!ItemCode.TryParse(request.ItemNumber, out itemCode))
{
logger.LogError("Not a valid item code {0}", request.ItemNumber);
return null;
}
var message = new Message()
{
TillNumber = tillNumber,
StoreCode = storeCode,
ItemCode = itemCode
};
return message;
}
}
1