Skip to content

Commit a4e23e0

Browse files
author
Vlad Ionescu
committed
getting rid of SetDeepCloneableMembersFrom
1 parent afb29ac commit a4e23e0

File tree

5 files changed

+26
-35
lines changed

5 files changed

+26
-35
lines changed

src/apigen/Apigen.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -495,13 +495,6 @@ public void EmitClassProperties(AmqpClass c) {
495495
EmitLine(" public override int ProtocolClassId { get { return "+c.Index+"; } }");
496496
EmitLine(" public override string ProtocolClassName { get { return \""+c.Name+"\"; } }");
497497
EmitLine("");
498-
EmitLine(" public override object Clone()");
499-
EmitLine(" {");
500-
EmitLine(" "+MangleClass(c.Name)+"Properties copy = MemberwiseClone() as "+MangleClass(c.Name)+"Properties;");
501-
EmitLine(" copy.SetDeepCloneableMembersFrom(this);");
502-
EmitLine(" return copy;");
503-
EmitLine(" }");
504-
EmitLine("");
505498
EmitLine(" public override void ReadPropertiesFrom(RabbitMQ.Client.Impl.ContentHeaderPropertyReader reader) {");
506499
foreach (AmqpField f in c.m_Fields)
507500
{

src/client/impl/BasicProperties.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,17 @@ public void SetPersistent(bool persistent) {
121121
}
122122
}
123123

124-
protected override void SetDeepCloneableMembersFrom(Object src)
124+
public override object Clone()
125125
{
126-
base.SetDeepCloneableMembersFrom(src);
127-
BasicProperties bpSrc = src as BasicProperties;
128-
129-
if (bpSrc.IsHeadersPresent())
126+
BasicProperties clone = MemberwiseClone() as BasicProperties;
127+
if (IsHeadersPresent())
130128
{
131-
Headers = new Hashtable();
132-
foreach (DictionaryEntry entry in bpSrc.Headers)
133-
Headers[entry.Key] = entry.Value;
129+
clone.Headers = new Hashtable();
130+
foreach (DictionaryEntry entry in Headers)
131+
clone.Headers[entry.Key] = entry.Value;
134132
}
133+
134+
return clone;
135135
}
136136
}
137137
}

src/client/impl/ContentHeaderBase.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ public abstract class ContentHeaderBase : IContentHeader
6969
public abstract void ReadPropertiesFrom(ContentHeaderPropertyReader reader);
7070
public abstract void WritePropertiesTo(ContentHeaderPropertyWriter writer);
7171
public abstract void AppendPropertyDebugStringTo(System.Text.StringBuilder sb);
72-
public abstract Object Clone();
7372

7473
///<summary>Fill this instance from the given byte buffer
7574
///stream. Throws BodyTooLongException, which is the reason
@@ -101,10 +100,9 @@ public void WriteTo(NetworkBinaryWriter writer, ulong bodySize)
101100
WritePropertiesTo(new ContentHeaderPropertyWriter(writer));
102101
}
103102

104-
protected virtual void SetDeepCloneableMembersFrom(Object src)
103+
public virtual object Clone()
105104
{
106-
if (!this.GetType().Equals(src.GetType()))
107-
throw new InvalidCastException("Trying to clone from object of different type");
105+
throw new NotImplementedException();
108106
}
109107
}
110108
}

src/client/impl/FileProperties.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,17 @@ public abstract class FileProperties : ContentHeaderBase, IFileProperties
9191
public abstract bool IsTimestampPresent();
9292
public abstract bool IsClusterIdPresent();
9393

94-
protected override void SetDeepCloneableMembersFrom(object src)
94+
public override object Clone()
9595
{
96-
base.SetDeepCloneableMembersFrom(src);
97-
FileProperties fpSrc = src as FileProperties;
98-
99-
if (fpSrc.IsHeadersPresent())
96+
FileProperties clone = MemberwiseClone() as FileProperties;
97+
if (IsHeadersPresent())
10098
{
101-
Headers = new Hashtable();
102-
foreach (DictionaryEntry entry in fpSrc.Headers)
103-
Headers[entry.Key] = entry.Value;
99+
clone.Headers = new Hashtable();
100+
foreach (DictionaryEntry entry in Headers)
101+
clone.Headers[entry.Key] = entry.Value;
104102
}
103+
104+
return clone;
105105
}
106106
}
107107
}

src/client/impl/StreamProperties.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,17 +79,17 @@ public abstract class StreamProperties : ContentHeaderBase, IStreamProperties
7979
public abstract bool IsPriorityPresent();
8080
public abstract bool IsTimestampPresent();
8181

82-
protected override void SetDeepCloneableMembersFrom(object src)
82+
public override object Clone()
8383
{
84-
base.SetDeepCloneableMembersFrom(src);
85-
StreamProperties spSrc = src as StreamProperties;
86-
87-
if (spSrc.IsHeadersPresent())
84+
StreamProperties clone = MemberwiseClone() as StreamProperties;
85+
if (IsHeadersPresent())
8886
{
89-
Headers = new Hashtable();
90-
foreach (DictionaryEntry entry in spSrc.Headers)
91-
Headers[entry.Key] = entry.Value;
87+
clone.Headers = new Hashtable();
88+
foreach (DictionaryEntry entry in Headers)
89+
clone.Headers[entry.Key] = entry.Value;
9290
}
91+
92+
return clone;
9393
}
9494
}
9595
}

0 commit comments

Comments
 (0)