I've these two classes
public class UserType : IUserType
{
public virtual string[] AuthenticationTokens { get; set; }
public virtual string Email { get; set; }
public virtual string Firstname { get; set; }
public virtual string Language { get; set; }
public virtual string Password { get; set; }
public virtual string Surname { get; set; }
public virtual string Username { get; set; }
}
public class GetUserResponseModel : IUserType
{
public string[] AuthenticationTokens { get; set; }
public string Email { get; set; }
public string Firstname { get; set; }
public string Language { get; set; }
public long LastLoginTimeStamp { get; set; }
public string Surname { get; set; }
public string Username { get; set; }
}
The following is the interface IUserType
public interface IUserType
{
string[] AuthenticationTokens { get; set; }
string Email { get; set; }
string Firstname { get; set; }
string Language { get; set; }
string Surname { get; set; }
string Username { get; set; }
}
When I try to make a cast from UserType to GetUserResponseModel, I receive an error that I cannot cast object of type UserType to type GetUserResponseModel.
UserType objA = new UserType();
GetUserResponseModel objB = (GetUserResponseModel)objA;
This error only happens at runtime. At code time, the line of the code where there is this cast, has not errors.
Another test I've made it's to define an explicit operator in the GetUserResponseModel class
public static explicit operator GetUserResponseModel(UserType value)
{
return new GetUserResponseModel
{
AuthenticationTokens = value.AuthenticationTokens,
Email = value.Email,
Firstname = value.Firstname,
Language = value.Language,
Surname = value.Surname,
Username = value.Username
};
}
But also in this case, I receive a runtime error.