Ich habe einige wiederholte Teile des Codes. Dies widerspricht dem DRY-Prinzip. Aber ich weiß nicht, wie man dies durch eine generische Methode ersetzt.C# richtigen Weg implementieren generische Methode
class Foo
{
public bool isFirstAttribHasRightValue;
public bool isSecondAttribHasRightValue;
private readonly T1 _firstAttrib;
private readonly T2 _secondAttrib;
public HashSet<T1> relatedToFirstAttrib;
public HashSet<T2> relatedToSecondAttrib;
...
public C()
{ ... }
public T1 GetFirstAttrib(T3 somevalue)
{
return (somevalue != othervalue) || isFirstAttribHasRightValue ? _firstAttrib : default(T1);
}
public T2 GetSecondAttrib(T3 somevalue)
{
return (somevalue != othervalue) || isSecondAttribHasRightValue ? _secondAttrib : default(T2);
}
public ClearRelatedToFirst()
{
isFirstAttribHasRightValue = true;
relatedToFirstAttrib.Clear();
}
public ClearRelatedToSecond()
{
isSecondAttribHasRightValue = true;
relatedToSecondAttrib.Clear();
}
...
}
Ich mag doppelte Methoden ersetzen, wie ClearRelatedToFirst()
und ClearRelatedToSecond()
, zu ClearRelatedToAttrib<TYPE>()
. Und innerhalb dieser generick-Methode weiß ich nicht, wie man wählt, welche bool
-Variable ich setzen muss oder welche hashset
ich löschen muss. Gleich wie bei anderen doppelten Methoden. Kannst du mir zeigen, wie ich diesen Code umgestalten kann? Danke.
Wenn i-Attribut von angeforderten Typ zurückgeben möchten, wie ich Methode implementieren sollte? 'public Attribut GetAttribute (T) {// was sollte da sein? } ' –
gek0n