Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Make TimeZoneInfo.TransitionTime fields readonly #8529

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 25 additions & 39 deletions src/mscorlib/src/System/TimeZoneInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4807,12 +4807,12 @@ void ISerializable.GetObjectData(SerializationInfo info, StreamingContext contex
public struct TransitionTime : IEquatable<TransitionTime>, ISerializable, IDeserializationCallback
{
// ---- SECTION: members supporting exposed properties -------------*
private DateTime m_timeOfDay;
private byte m_month;
private byte m_week;
private byte m_day;
private DayOfWeek m_dayOfWeek;
private Boolean m_isFixedDateRule;
private readonly DateTime m_timeOfDay;
private readonly byte m_month;
private readonly byte m_week;
private readonly byte m_day;
private readonly DayOfWeek m_dayOfWeek;
private readonly Boolean m_isFixedDateRule;


// ---- SECTION: public properties --------------*
Expand Down Expand Up @@ -4896,16 +4896,24 @@ public override int GetHashCode() {


// -------- SECTION: constructors -----------------*
/*
private TransitionTime() {
m_timeOfDay = new DateTime();
m_month = 0;
m_week = 0;
m_day = 0;
m_dayOfWeek = DayOfWeek.Sunday;
m_isFixedDateRule = false;

private TransitionTime(
DateTime timeOfDay,
Int32 month,
Int32 week,
Int32 day,
DayOfWeek dayOfWeek,
Boolean isFixedDateRule)
{
ValidateTransitionTime(timeOfDay, month, week, day, dayOfWeek);

m_timeOfDay = timeOfDay;
m_month = (byte)month;
m_week = (byte)week;
m_day = (byte)day;
m_dayOfWeek = dayOfWeek;
m_isFixedDateRule = isFixedDateRule;
}
*/


// -------- SECTION: factory methods -----------------*
Expand All @@ -4916,7 +4924,7 @@ static public TransitionTime CreateFixedDateRule(
Int32 month,
Int32 day) {

return CreateTransitionTime(timeOfDay, month, 1, day, DayOfWeek.Sunday, true);
return new TransitionTime(timeOfDay, month, 1, day, DayOfWeek.Sunday, isFixedDateRule: true);
}


Expand All @@ -4926,29 +4934,7 @@ static public TransitionTime CreateFloatingDateRule(
Int32 week,
DayOfWeek dayOfWeek) {

return CreateTransitionTime(timeOfDay, month, week, 1, dayOfWeek, false);
}


static private TransitionTime CreateTransitionTime(
DateTime timeOfDay,
Int32 month,
Int32 week,
Int32 day,
DayOfWeek dayOfWeek,
Boolean isFixedDateRule) {

ValidateTransitionTime(timeOfDay, month, week, day, dayOfWeek);

TransitionTime t = new TransitionTime();
t.m_isFixedDateRule = isFixedDateRule;
t.m_timeOfDay = timeOfDay;
t.m_dayOfWeek = dayOfWeek;
t.m_day = (byte)day;
t.m_week = (byte)week;
t.m_month = (byte)month;

return t;
return new TransitionTime(timeOfDay, month, week, 1, dayOfWeek, isFixedDateRule: false);
}


Expand Down