2016-07-05 1 views
0

은 ...일반 인터페이스 유형을 보유하는 등록 정보를 어떻게 정의합니까?

public interface ILibraryService<T> 
where T : Library 
{ 
    ReadOnlyObservableCollection<T> AvailableLibraries { get; } 
} 

나는이 의사 코드처럼,이 인터페이스를 구현하는 객체를 보유 할 수있는 정적 속성을 정의 할 ...

public static class Services 
{ 
    public static ILibraryService<T> LibraryService { get; set; } 
} 

를 다음과 같은 인터페이스를 고려 .. 그러나 나는 속성을 정의하는 방법을 이해할 수 없다. 나는 그것이 단순한 무엇인가 알고있다. 그러나 나는 단지 그것을 보지 않고있다.

+1

정확하게 보입니다. 컴파일되지 않습니까? –

+0

아니요! 직접 사용해보십시오! – MarqueIV

+0

[C#에서 일반 속성을 허용하지 않는 이유는 무엇입니까?] (http://stackoverflow.com/questions/8620883/why-does-c-sharp-not-allow-generic-properties). 당신 말이 맞아요! 매일 새로운 것을 배우십시오. 나는 스레드가 꽤 철저하다고 생각합니다. –

답변

0

당신이 뭘하고있는거야? 필자가 알고있는 바에 따르면 Microsoft는 속성에 형식 절을 추가하는 기능을 의도적으로 사용하지 않았습니다.

public static class Services 
{ 
    public static ILibraryService<T> GetLibraryService<T>() 
     where T : Library 
    { 
     return null; // ... 
    } 
} 

public static class Services<T> 
    where T : Library 
{ 
    public static ILibraryService<T> LibraryService { get; set; } 
} 

public static class Services<T> 
    where T : ILibraryService<Library> 
{ 
    public static T LibraryService { get; set; } 
} 

public static class Services<TService, TLibrary> 
    where TService : ILibraryService<TLibrary> 
    where TLibrary : Library 
{ 
    public static ILibraryService<TLibrary> LibraryService { get; set; } 
} 
+0

Aaah ... 첫 번째 예제가 기능이 아니라 속성이라는 것을 알기도 전에 흥분했습니다. 전자가 좋을 때 그들이 후자를 왜 제한하는지는 알 수 없습니다. 그러나 나는 그것이 내가 바라는 바대로 재산으로 할 수 없다고 대답한다. – MarqueIV

관련 문제