Может кто-нибудь объяснить мне, почему следующее определение интерфейса компилируется с ошибкой в 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'? Опубликуйте все его конструкторы. – Nawaz
Я смог скомпилировать с помощью фиктивного класса IncompleteCodePort. Я считаю, что вам не хватает информации здесь. – Manish
Если вы используете 'Enum' в классе' IncompleteCodePort', не делайте этого. Вместо этого используйте 'SourceOriginType'. – Corey