Есть ли способ управления преобразованием типов в C #? Например, если у меня есть два типа с практически одинаковыми деталями, но один используется для внутренней работы моего приложения, а другой - DTO, используемый для связи с приложениями, отличными от .Net:
public sealed class Player
{
public Player(string name, long score)
{
Name = name;
Score = score;
ID = Guid.NewGuid();
}
public string Name { get; private set; }
public Guid ID { get; private set; }
public long Score { get; private set; }
}
public sealed class PlayerDTO
{
public PlayerDTO(string name, long score, string id)
{
Name = name;
Score = score;
ID = id;
}
public string Name { get; private set; }
// the client is not .Net and doesn't have Guid
public string ID { get; private set; }
public long Score { get; private set; }
}
Прямо сейчас мне нужно каждый раз создавать новый экземпляр PlayerDTO из моего экземпляра Player, и я ищу лучший, более чистый способ сделать это.
У меня была идея добавить метод AsPlayerDTO () в класс проигрывателя, но было бы неплохо, если бы я мог контролировать процесс преобразования типов, чтобы я мог сделать это вместо этого:
var playerDto = player as PlayerDTO;
Кто-нибудь знает, возможно ли это и как я могу это сделать?
Спасибо