I'm starting to create data models and one of the models I need should represent a mailing/billing address. While I reside in the United States, I recognize that there are different terms utilized in different parts of the world. As such, I wanted to define the properties of my model to be more generic in the sense that they can apply no matter which part of the world you're in:
/// <summary>
/// A postal code for use in company systems.
/// </summary>
public struct PostalCode
{
/// <summary>
/// The five digit postal code.
/// </summary>
public string Value { get; set; }
/// <summary>
/// The four digit segment code.
/// </summary>
public string Segment { get; set; }
}
/// <summary>
/// A universal structure for representing physical/mailing addresses.
/// </summary>
public struct Address
{
/// <summary>
/// The structure number and street name this address represents.
/// </summary>
string StreetAddress { get; set; }
/// <summary>
/// Data representative of a typical secondary address line.
/// </summary>
/// <remarks>Examples of valid data are PO boxes, room numbers, attention to descriptions, etc.
string AdditionalDetails { get; set; }
/// <summary>
/// The city, town, etc. that this address resides in.
/// </summary>
string Municipality { get; set; }
/// <summary>
/// The state, province, etc. that this address resides in.
/// </summary>
string Domain { get; set; }
/// <summary>
/// The country this address resides in.
/// </summary>
string Country { get; set; }
/// <summary>
/// The division of land this address resides in. Synonymous with county, parish, borough, etc.
/// </summary>
string Shire { get; set; }
/// <summary>
/// A series of letters, digits or both, sometimes including spaces or punctuation, included in this address.
/// </summary>
PostalCode PostalCode { get; set; }
}
Edit: I should've initially pointed out, I do need all of the properties listed; I'm mostly focused on naming and documentation.
Is my address model to broad or "over the top"?