C # 올바른 방법으로 제네릭 메서드 구현

Murzagurskiy

반복되는 코드 조각이 있습니다. 이것은 DRY principe와 모순됩니다. 그러나 이것을 일반적인 방법으로 대체하는 방법을 모르겠습니다.

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();
    }
    ...
}

내가 좋아하는 중복 방법을 대체하기 위해 같은 ClearRelatedToFirst()ClearRelatedToSecond()ClearRelatedToAttrib<TYPE>(). 그리고 그 generick 방법 안에 내가 어떤 선택하는 방법을 모르는 bool세트거나 -variable 내가 필요 hashset내가 삭제해야합니다. 다른 복제 방법과 동일합니다. 이 코드를 어떻게 리팩토링 할 수 있는지 보여줄 수 있습니까? 감사.

리아드 바그 반리

아래 코드를 참조하십시오.

class Attribute<T>
{
    public bool isRightValue;
    public HashSet<T> relatedHashSet;
    private T _value;

    public T GetValue(T3 somevalue)
    {
        return (somevalue != othervalue) || isRightValue ? _value : default(T);
    }

    public Clear()
    {
         isRightValue = true;
         relatedHashSet.Clear();
    }
}

class Foo
{
    public Attribute<T1> firstAttribute;
    public Attribute<T2> secondAttribute;
    ...

    public Foo()
    { ... }
    ...
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바에서 제네릭 메소드를 구현하는 방법

분류에서Dev

제네릭 / 무의미한 방식으로 제네릭 메서드를 구현하는 가장 좋은 방법

분류에서Dev

C #에서 제네릭 메서드 호출을 위조하면 FakeItEasy로 올바른 개체가 반환되지 않습니다.

분류에서Dev

제네릭 클래스에서 Iterable <> 메서드를 구현하는 방법

분류에서Dev

추상 제네릭 메서드 구현

분류에서Dev

제네릭 및 비 제네릭 메서드 간의 C # 오버로드 해결

분류에서Dev

grails에서 삭제 기능을 구현하는 올바른 방법?

분류에서Dev

제네릭 메서드와 기본 메서드를 C #으로 작성하는 방법

분류에서Dev

Crafting Interpreter의 책에서 C #으로 LOX 언어 구현을 이식하려고 할 때 제네릭 문제

분류에서Dev

C #에서 제네릭 메서드의 값을 얻는 방법

분류에서Dev

C ++에서 구조를 만드는 올바른 방법

분류에서Dev

C #에서 제네릭 형식으로 인터페이스를 구현하는 클래스 팩토리?

분류에서Dev

이 C # 메서드를 제네릭으로 만드는 방법은 무엇입니까?

분류에서Dev

C ++ 오버로드 제네릭 메서드, 참조 및 값

분류에서Dev

C #에서 비교하는 제네릭 개체 구현

분류에서Dev

C #에서 제네릭 인터페이스 구현

분류에서Dev

제네릭 클래스 메서드에 대한 올바른 확장 메서드를 얻는 방법은 무엇입니까?

분류에서Dev

반복기에 대한 제네릭 메서드를 구현하는 적절한 방법

분류에서Dev

C #에서 단일 연결 목록을 제네릭으로 만드는 방법

분류에서Dev

C ++ 17에서 반복기와 const_iterator를 구현하는 올바른 방법은 무엇입니까?

분류에서Dev

이것이 C API에서 추상화를 구현하는 올바른 방법입니까?

분류에서Dev

Java에서 다른 제네릭으로 생성자를 만드는 방법

분류에서Dev

제네릭 변환 메서드를 사용하여 추상 클래스의 다른 구현 간 변환

분류에서Dev

Meteor React에서 Pikaday를 구현하는 올바른 방법

분류에서Dev

Kotlin에서 제한된 제네릭으로 추상 클래스 구현

분류에서Dev

C ++에서 혼합 모드 산술을위한 연산자 오버로딩을 구현하는 올바른 방법

분류에서Dev

제네릭을 사용하는 정적 메서드에서 확장을 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

C # 메서드에서 제네릭 클래스 참조를 얻는 방법

분류에서Dev

화재를 구현하고 비동기 메서드 호출을 잊어 버리는 올바른 방법

Related 관련 기사

  1. 1

    자바에서 제네릭 메소드를 구현하는 방법

  2. 2

    제네릭 / 무의미한 방식으로 제네릭 메서드를 구현하는 가장 좋은 방법

  3. 3

    C #에서 제네릭 메서드 호출을 위조하면 FakeItEasy로 올바른 개체가 반환되지 않습니다.

  4. 4

    제네릭 클래스에서 Iterable <> 메서드를 구현하는 방법

  5. 5

    추상 제네릭 메서드 구현

  6. 6

    제네릭 및 비 제네릭 메서드 간의 C # 오버로드 해결

  7. 7

    grails에서 삭제 기능을 구현하는 올바른 방법?

  8. 8

    제네릭 메서드와 기본 메서드를 C #으로 작성하는 방법

  9. 9

    Crafting Interpreter의 책에서 C #으로 LOX 언어 구현을 이식하려고 할 때 제네릭 문제

  10. 10

    C #에서 제네릭 메서드의 값을 얻는 방법

  11. 11

    C ++에서 구조를 만드는 올바른 방법

  12. 12

    C #에서 제네릭 형식으로 인터페이스를 구현하는 클래스 팩토리?

  13. 13

    이 C # 메서드를 제네릭으로 만드는 방법은 무엇입니까?

  14. 14

    C ++ 오버로드 제네릭 메서드, 참조 및 값

  15. 15

    C #에서 비교하는 제네릭 개체 구현

  16. 16

    C #에서 제네릭 인터페이스 구현

  17. 17

    제네릭 클래스 메서드에 대한 올바른 확장 메서드를 얻는 방법은 무엇입니까?

  18. 18

    반복기에 대한 제네릭 메서드를 구현하는 적절한 방법

  19. 19

    C #에서 단일 연결 목록을 제네릭으로 만드는 방법

  20. 20

    C ++ 17에서 반복기와 const_iterator를 구현하는 올바른 방법은 무엇입니까?

  21. 21

    이것이 C API에서 추상화를 구현하는 올바른 방법입니까?

  22. 22

    Java에서 다른 제네릭으로 생성자를 만드는 방법

  23. 23

    제네릭 변환 메서드를 사용하여 추상 클래스의 다른 구현 간 변환

  24. 24

    Meteor React에서 Pikaday를 구현하는 올바른 방법

  25. 25

    Kotlin에서 제한된 제네릭으로 추상 클래스 구현

  26. 26

    C ++에서 혼합 모드 산술을위한 연산자 오버로딩을 구현하는 올바른 방법

  27. 27

    제네릭을 사용하는 정적 메서드에서 확장을 사용하는 올바른 방법은 무엇입니까?

  28. 28

    C # 메서드에서 제네릭 클래스 참조를 얻는 방법

  29. 29

    화재를 구현하고 비동기 메서드 호출을 잊어 버리는 올바른 방법

뜨겁다태그

보관