2014-09-19 2 views
0

사용자 지정 인터페이스 형식 (IMyInterface)의 ReadOnlyCollection이 있습니다. 사용자 인터페이스 유형에 확장 메소드를 추가하고 싶습니다. 그러나 ReadOnlyCollection 내부의 항목에 액세스하면 내 확장 메서드가 표시되지 않습니다. 다음은 내 코드입니다 :ReadOnlyCollection의 항목에 확장 메서드

public static class MyClass 
{ 
    public static string GetValueByName(this IMyInterface myInterface, string myName) 
    { 
     foreach (var name in myInterface.names) // 
     { 
      if (myName == name) 
       return name; 
     } 
     throw new ArgumentException(myName + " not found."); 
    } 
} 

내가 좋아하는 일을하여 액세스하려고

확장 방법은 사용할 수 없습니다 팝업에 표시되지
MyMethod[0].<extension method> //MyMethod returns a ReadOnlyCollection<IMyInterface> 

MyMethod라는 [0] (Visual Studio에서) 사용할 수 없음을 의미합니다. 내가 뭘 놓칠 수 있니? ReadOnlyCollection에 항목의 확장 메서드를 추가 할 수 있습니까? 내가 대답으로 바꿀 수 있습니다

+3

확장 프로그램의 네임 스페이스에'using '을 포함하지 않은 것 같습니다. –

+0

와우! 나는 Visual Studio가 그것을 자동으로 감지하고 그것을 추가 할 것을 촉구 할 것이라고 생각했다. 네임 스페이스가 없다는 것을 깨닫지 못했습니다! @NeilSmith에게 감사합니다. 그게 효과가 있었어! – Setafire

+1

사람들이 자신의 클래스/인터페이스에 확장 방법을 사용하는 이유가 궁금합니다! – Yogee

답변

1

추측 : 당신은 당신의 확장의 네임 스페이스에 대한 using 문을 포함하지 않은

.

예를 들어 MyNamespace에 확장 프로그램을 작성한 경우 해당 확장 프로그램을 사용하는 클래스에 using MyNamespace을 포함해야합니다.