【发布时间】:2013-05-14 09:36:36
【问题描述】:
我复制并粘贴了WebMatrix.WebData.IDatabase的源代码,但VStudio标记了Dynamic字样并说
不要使用“System.Runtime.CompilerServices.DynamicAttribute”。使用 'dynamic' 关键字。
为什么在使用原始 .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);
}
}
}
【问题讨论】:
-
您从哪里复制此源来自,究竟是什么?在我看来,您使用的是旧资源
-
@Marc Gravell 我使用 .net 反射器来反编译它...
-
啊,对;那么那不是源代码。 Reflector 经常出错,因为它没有向您显示源代码。或者,反射器通过向您展示真正存在的东西来“正确”地处理事情。但是:这可能与您编写的代码不同。
-
@Marc Gravell 我认为你是对的......我尝试使用你的源代码链接......