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:
Here is how you would use it:
- 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)
- };
- }
- Contact contact = (Contact)person;
No comments:
Post a Comment