Я читаю «Head First объектно-ориентированного проектирования и анализа» и я застрял на странице 254.Преобразование Java код C# код
В коде Java ниже, я пытаюсь преобразовать «Спички» метод to aC# one.
public class InstrumentSpec {
private Map properties;
public InstrumentSpec(Map properties) {
if (properties == null) {
this.properties = new HashMap();
} else {
this.properties = new HashMap(properties);
}
}
public Object getProperty(String propertyName) {
return properties.get(propertyName);
}
public Map getProperties() {
return properties;
}
public boolean matches(InstrumentSpec otherSpec) {
for (Iterator i = otherSpec.getProperties().keySet().iterator();
i.hasNext();) {
String propertyName = (String)i.next();
if (!properties.get(propertyName).equals(
otherSpec.getProperty(propertyName))) {
return false;
}
}
return true;
}
}
И это C# код, который я до сих пор:
public class InstrumentSpec
{
private IDictionary _properties;
public InstrumentSpec(IDictionary properties)
{
this._properties = properties == null ? new Hashtable() : new Hashtable(properties);
}
public object GetProperty(string propertyName)
{
return _properties.Contains(propertyName);
}
public IDictionary Properties
{
get { return _properties; }
set { _properties = value; }
}
public virtual bool Matches(InstrumentSpec otherSpec)
{
foreach (var prop in otherSpec.Properties)
{
if (!prop.Equals(otherSpec.Properties))
{
return false;
}
}
return true;
}
}
Любой имеет какие-либо идеи, как сделать метод Matching работу таким образом, что он проверяет два объекта совпадают?
разве там .equals() для каждого объекта? –
Да, есть метод equals() для каждого объекта, и, как вы можете видеть, я использовал его в своем коде, но я не могу понять, как правильно это сделать с IDictionary. –