문제

CE 프레임 워크에서도 확장 방법을 사용할 수 있습니까? Windows Forms 프로젝트에서 잘 작동하는 String에 대한 확장 방법이 있지만 PocketPC 응용 프로그램에서는 빌드되지 않습니다.

나는 이것이 쉽게 찾을 수 있다고 생각했지만 pocketpc에서 확장 방법에 관한 정보를 찾을 수 없었습니다.

편집하다: OOOPS 이것은 내 실수였습니다. 나는 Visual Studio 2008에 확장 방법을 썼지 만 PocketPC 프로젝트는 Visual Studio 2005에서 편집되어 실현되지 않았습니다. 글쎄, 그것은 내 인생의 한 시간입니다. 어쨌든 답변 해 주셔서 감사합니다.

도움이 되었습니까?

해결책

여기서 약간의 혼란을 없애고 싶었습니다. 확장 메소드는 컴파일러의 특징이며, 반드시 특정 버전의 프레임 워크는 아닙니다. 따라서 확장 방법은 확장 방법과 해당 플랫폼을 모두 지원하는 컴파일러 버전이있는 모든 플랫폼에서 사용할 수 있습니다.

C# 3.0 컴파일러는 2.0 프레임 워크로 타겟팅하고 확장 방법을 지원하여 소형 프레임 워크에서 사용할 수 있어야합니다.

프레임 워크가 실제로 확장 방법을 제공하는 유일한 것은 ExtensionAttribute입니다. 그러나 이것은 기능과 관련된 기능이 없으며 사용할 수없는 경우 응용 프로그램에서 정의 할 수 있습니다. 다음은 제가 주제에 대해 쓴 블로그 게시물입니다.

다른 팁

예, CF 3.5에서 지원됩니다. CF 2.0을 사용하는 경우 ExtensionAttribute를 정의해야하며 작동합니다.

    // this is a definition of a 3.5 class for use in 2.0.  If we upgrade to target CF3.5, we will need to remove it...
    namespace System.Runtime.CompilerServices 
    { 
        public class ExtensionAttribute : Attribute { } 
    }

namespace TestExtension
{
    public static class Extensions
    {
        public static int TestMethod(this string value)
        {
            return value.ToString();
        }
    }
}

그들은 컴팩트 프레임 워크에서 지원됩니다 이 블로그 게시물. 그러나 컴팩트 프레임 워크 버전 3.5가 필요합니다. 어떤 버전을 사용하고 있습니까?

당신은 어떤 프레임 워크 버전을 목표로하고 있습니까? VS2008에서 CF 2.0을 목표로하는 경우 ExtensionAttribute를 선언해야 할 수도 있습니다.

namespace System.Runtime.CompilerServices
{
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
         | AttributeTargets.Method)]
    public sealed class ExtensionAttribute : Attribute {}
}

.NET Compact Framework 2.0 및 VS2008과 함께 사용할 수 있습니다. 이것 블로그.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top