2013-05-14 4 views
5

내가 복사 WebMatrix.WebData.IDatabase 붙여 넣기 소스하지만 VStudio 마크 동적 말을하고 'System.Runtime.CompilerServices.DynamicAttribute'를 사용하지 마십시오. 대신

가 'System.Runtime.CompilerServices.DynamicAttribute'를 사용하지 마십시오 말했다 '동적'키워드를 사용합니다. 대신 '동적'키워드 을 사용하십시오.

원래 .net 프레임 워크를 사용했을 때 왜이 오류가 발생합니까?

namespace WebMatrix.WebData 
{ 
    using System; 
    using System.Collections.Generic; 
    using System.Runtime.CompilerServices; 

    internal interface IDatabase : IDisposable 
    { 
     int Execute(string commandText, params object[] args); 

     [return: Dynamic(new bool[] { false, true })] 
     IEnumerable<object> Query(string commandText, params object[] parameters); 

     [return: Dynamic] 
     object QuerySingle(string commandText, params object[] args); 

     [return: Dynamic] 
     object QueryValue(string commandText, params object[] parameters); 
    } 
} 

나는 여기에 같은 오류가 발생합니다 : :

소스 코드는 여기

에 매핑
namespace WebMatrix.WebData 
{ 
    internal class DatabaseWrapper : IDatabase, IDisposable 
    { 
     private readonly Database _database; 

     public DatabaseWrapper(Database database) 
     { 
      this._database = database; 
     } 

     public void Dispose() 
     { 
      this._database.Dispose(); 
     } 

     public int Execute(string commandText, params object[] parameters) 
     { 
      return this._database.Execute(commandText, parameters); 
     } 

     [return: Dynamic(new bool[] { false, true })] 
     public IEnumerable<object> Query(string commandText, params object[] parameters) 
     { 
      return this._database.Query(commandText, parameters); 
     } 

     [return: Dynamic] 
     public object QuerySingle(string commandText, params object[] parameters) 
     { 
      return this._database.QuerySingle(commandText, parameters); 
     } 

     [return: Dynamic] 
     public object QueryValue(string commandText, params object[] parameters) 
     { 
      return this._database.QueryValue(commandText, parameters); 
     } 
    } 
} 
+0

어디에서 *이 소스를 복사하고 있습니까? 그것은 당신이 오래된 소스를 사용하고있는 것처럼 보입니다. –

+1

@Marc Gravell 나는 그것을 재 컴파일하기 위해 .net reflector를 사용했습니다 ... –

+1

아, 맞아요. ** 소스 코드 **가 아닙니다. 리플렉터는 ** 당신에게 소스 코드 **가 보이지 않기 때문에 종종 "잘못"합니다. 또는 반사경은 실제로 무엇이 있는지 보여줌으로써 "올바른"것을 얻습니다. 그러나 그것은 코드로 작성하는 것과 다를 수 있습니다. –

답변

5

:

IEnumerable<dynamic> Query(string commandText, params object[] parameters); 
dynamic QuerySingle(string commandText, params object[] args); 
dynamic QueryValue(string commandText, params object[] parameters); 

내가 생각할 수있는 유일한 이유 대체 구문을 사용하는 것은 하위 레벨 컴파일러에서 컴파일하기위한 것입니다.이 컴파일러는 0123에 대해 알지 못합니다.키워드. 그러나 [DynamicAttribute]dynamic을 지원하는 컴파일러가 포함 된 .NET 4.0 이후에만 존재했습니다. 생각 : CTP 빌드에 대해 dynamic가 불완전 할 때

  • 그것은 아마도 반드시 vLatest를 사용하도록 구성되지 않을 수 asp.net 컴파일러를 사용하고는
  • 이 아마도 초기 개발 관련이 있습니까

current source을 보면 을 사용하여 어떤 [Dynamic] 사용이 순전히 과도기라는 가설을 뒷받침합니다.

+0

고맙습니다. http://aspnetwebstack.codeplex.com/SourceControl/latest#src/WebMatrix.WebData/IDatabase.cs 사용하기 좋은 소스입니다. : D –

관련 문제