좋은 아침,
타사에서 작업해야하는 2 개의 개체가 있습니다. 이러한 개체는 거의 동일합니다 (적어도 액세스해야하는 부분은 다음과 같습니다. 현재 각 개체를 처리하는 별도의 메서드가 있으며 친절한 사람들의 도움을 받아보고 싶습니다. 제가 이것을 제네릭으로 변환 할 수 있다면 두 개체를 모두 처리합니다.
public static ObjectOut Method1(Object1 obj1)
{
if (obj1.ErrorCode == 0)
{
//do something
}
}
public static ObjectOut Method2(Object1 obj2)
{
if (obj2.ErrorCode == 0)
{
//do something
}
}
이것을 하나의 제네릭 메서드로 변환하면 객체의 "ErrorCode"속성에 어떻게 액세스 할 수 있습니까? 어떤 도움이나 안내를 주시면 대단히 감사하겠습니다.
감사
두 유형의 객체에 공통 수퍼 유형이 있으면 제네릭도 필요하지 않습니다.
public static ObjectOut Method(ICommonInterfaceWithErrorCodeProperty obj)
{
if (obj.ErrorCode == 0)
{
//do something
}
}
속성의 이름이 같은 경우 "일반 코드"가 별도의 메서드에 있도록 코드를 리팩터링 할 수 있습니다. 두 가지 예를 들어 보겠습니다.
DoSomething
큰 공통 블록입니다.DoSomething
개체의 속성에 액세스해야합니다.첫 번째 경우에는 다음을 추출 할 수 있습니다 DoSomething
.
public static ObjectOut Method1(Object1 obj1)
{
if (obj1.ErrorCode == 0)
{
return DoSomething();
}
}
public static ObjectOut Method2(Object1 obj2)
{
if (obj2.ErrorCode == 0)
{
return DoSomething();
}
}
public static ObjectOut DoSomething() { ... }
두 번째 경우에는 필요한 모든 값을 추출하여 일반적인 메서드에 전달합니다.
public static ObjectOut Method1(Object1 obj1)
{
return Method(obj1.ErrorCode);
}
public static ObjectOut Method2(Object2 obj1)
{
return Method(obj2.ErrorCode);
}
public static ObjectOut Method(int errorCode)
{
if (errorCode == 0)
{
...
}
}
객체에서 메서드를 실행해야하는 경우 람다를 Method
.
(분명히 오류 코드가 0이 아니면 메서드가 아무 것도 반환하지 않는다는 사실을 수정해야합니다.하지만 컴파일러가 이미 그렇게 말한 것 같습니다.)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다