【发布时间】:2013-02-09 12:38:48
【问题描述】:
有人可以向我解释为什么以下接口定义在 Visual Studio 2010 中编译时出错?
[IncompleteCodePort(SourceOriginType.Other, "This should be a GL abstraction depending on what OpenGL API will be used")]
public interface IGL
{
/// <summary>
/// Returns true if provided function is available or supported by graphics API
/// </summary>
/// <param name="funcName"></param>
/// <returns></returns>
bool IsFunctionAvailable(string funcName);
/// <summary>
/// Returns true if provided function is supported as extension by graphics API
/// </summary>
/// <param name="funcName"></param>
/// <returns></returns>
bool IsExtensionAvailable(string funcName);
}
public class IncompleteCodePortAttribute : Attribute
{
public SourceOriginType SourceOriginType { get; private set; }
public string SourceUrl { get; private set; }
public string Reason { get; private set; }
public IncompleteCodePortAttribute(SourceOriginType originType, string reason, string sourceUrl = null)
{
SourceOriginType = originType;
SourceUrl = sourceUrl;
Reason = reason;
}
}
public enum SourceOriginType
{
CodePlex,
WorldWindJdk,
StackOverflow,
Other
}
我得到的错误是:
属性参数必须是属性参数类型的常量表达式、typeof表达式或数组创建表达式
如果我删除自定义属性,我不会收到任何编译错误。
【问题讨论】:
-
什么是
IncompleteCodePort?发布它的所有构造函数。 -
我能够使用一个虚拟的 IncompleteCodePort 类进行编译。我相信您在这里遗漏了一些信息。
-
如果您在
IncompleteCodePort类中使用Enum,请不要。请改用SourceOriginType。 -
我的错。以这种方式发布为时已晚。我已经添加了 IncompleteCodePortAttribute 定义。
-
这是 c# 编译器中的一个错误。它已被修复。见stackoverflow.com/questions/8290853/…
标签: c# interface attributes