According to MSDN, explicit operator keyword declares a user-defined type conversion operator that must be invoked with a cast. This is super handy if you are doing a lot of conversion/translation in your code.
Here is an converting between two separate classes, Person and Contact - which have translatable properties between them.
public class Contact { public string Name { get; set; } public string PrimaryPhone { get; set; } public string PrimaryEmail { get; set; } } public class Person{ public int PersonId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string HomePhone { get; set; } public string HomeEmail { get; set; } public string WorkPhone { get; set; } public string WorkEmail { get; set; } public string CellPhone { get; set; } }
Then, you can create an explicit conversion operator such as this:
public static explicit operator Contact (Person person) { return new Contact { Name = person.FirstName + " " + person.LastName, PrimaryPhone = (String.IsNullOrEmpty(person.CellPhone) ? (String.IsNullOrEmpty(person.WorkPhone) ? person.HomePhone : person.WorkPhone) : person.CellPhone), PrimaryEmail = (String.IsNullOrEmpty(person.WorkEmail) ? person.HomeEmail : person.WorkEmail) }; }Here is how you would use it:
Contact contact = (Contact)person;
No comments:
Post a Comment