컬렉션에 사용자 지정 인덱서를 만들려고합니다. 여기 내 클래스는 다음과 같습니다컬렉션에 사용자 지정 인덱서 구현
비즈니스 클래스 :
public class UserCollection : Collection<User>
{
public new User this[int index]
{
get
{
return this.FirstOrDefault(x => x.UserID == index);
}
}
}
BL API 방법 :
public static Collection<User> GetUser()
{
return new UserCollection
{
new User {UserID = 2},
new User {UserID = 4}
};
}
사용법 :
Collection<User> users = GetUser();
User user = users[2];
}
사용자 클래스는 사용자 ID와 같은 몇 가지 열이, 사용자 이름 등 콜렉션에서 인덱스를 통해 사용자를 가져오고 싶습니다. 여기서 인덱스는 사용자 ID입니다. 그러나 위의 사용법 코드는이를 수행하지 않고 부모 Collection 클래스의 인덱서를 고려하고 있습니다. 내 맞춤 인덱서를 사용하고 싶습니다. 나는 getUser 메소드의 반환 형식으로 UserCollection를 노출하여 작업을 수행 할 수 있습니다 후 솔루션이
UserCollection users = GetUser();
과 같은 코드를 사용하는 것입니다하지만 난 여기 BL 방법의 가장 일반적인 유형의 컬렉션은 반환 할 생각입니다 . 이 문제를 어떻게 해결할 수 있습니까?
"GetByUserId"또는 그와 유사한 함수의 이름을 지정하면 호출자가 혼동을 덜 주며 인덱서 속성은 일반적으로 _nth_ 요소 (int 일 경우) 또는 해당 값이 키잉 된 요소 (예 : 문자열/기타 유형별). – Reddog