이의는 다음의 예를 보자 C#에서 제네릭 형식에 대한 별칭을 범위 방법 'System.Linq.Enumerable.Select (시스템에 대한네임 스페이스
유형 인수 .Collections.Generic.IEnumerable, System.Func) ' 을 사용에서 유추 할 수 없습니다. 형식 인수 을 명시 적으로 시도하십시오.
왜냐하면 Bar
을 Func<IList<X>, int, IDictionary<Y, IList<Z>>>
으로 변환 할 수 없기 때문입니다.
C#에서 제네릭 형식에 대한 형식 네임 스페이스 범위 지정 형식 별칭을 만들면 좋을 것입니다. 그렇다면 Bar
을 대리자가 아니라, Func<IList<X>, int, IDictionary<Y, IList<Z>>>
의 네임 스페이스 범위 지정 별칭으로 정의합니다.
public alias Bar = Func<IList<X>, int, IDictionary<Y, IList<Z>>>;
그러면 다음과 같은 네임 스페이스 범위 별칭도 정의 할 수 있습니다. IDictionary<Y, IList<Z>>
.
적절히 사용하면 :) 코드를보다 읽기 쉽게 만듭니다. 자, 제네릭 형식을 인라인해야하고 실제 코드는 잘 읽을 수 없습니다. (
같은 문제가 있습니까 :)? C# 3.0에없는 이유가 있습니까? 아니면 좋은 이유가 없습니다. 그것은 돈과 시간의 문제 일뿐입니다.
편집 : 나는 using
을 사용할 수 있지만 그 것이 네임 스페이스 범위가 아니라는 것을 알고 있습니다. 제 경우에는 그렇게 편리하지 않습니다.
EDIT2 : comment by Joren을 참조하십시오. 여기서 그는 구조적 타이핑이 문제를 해결할 수도 있다고 제안합니다. 당신이 경우에
'사용 중'문제점이 무엇인지 확신 할 수 없습니다. 새로운 유형을 정의하지는 않지만 원하는 것은 아닙니다. –
필자가 쓴대로, 범위가 지정된 네임 스페이스가 아니라 파일 범위가 지정됩니다. cs 파일과 어셈블리에서 별칭을 사용해야합니다. –