相关疑难解决方法(0)

如何将对象传递给属性构造函数

我试图将对象传递给Attributes构造函数,如下所示:

[PropertyValidation(new NullOrEmptyValidatorScheme())]
public string Name { get; private set; }
Run Code Online (Sandbox Code Playgroud)

使用此属性构造函数:

 public PropertyValidationAttribute(IValidatorScheme validator) {
      this._ValidatorScheme = validator;
    }
Run Code Online (Sandbox Code Playgroud)

代码不会编译.如何将对象传递给上面的属性?

编辑:是NullOrEmptyValidatorScheme实现IValidatorScheme.

错误:错误CS0182:属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式.

c# attributes

55
推荐指数
3
解决办法
5万
查看次数

在属性构造函数中使用可选参数时,属性参数必须是常量错误

谁能解释为什么这段代码有效:

public class AdministratorSettingValidationAttribute : Attribute
{
    public AdministratorSettingValidationAttribute(AdministratorSettingDataType administratorSettingDataType)
    {
        DataType = administratorSettingDataType;
    }

    public AdministratorSettingValidationAttribute(AdministratorSettingDataType administratorSettingDataType, Type enumerationType)
    {
        DataType = administratorSettingDataType;
        EnumerationType = enumerationType;
    }
}
Run Code Online (Sandbox Code Playgroud)

...但重构它以使用可选参数:

    public AdministratorSettingValidationAttribute(AdministratorSettingDataType administratorSettingDataType, Type enumerationType = null)
    {
        DataType = administratorSettingDataType;
        EnumerationType = enumerationType;
    }
Run Code Online (Sandbox Code Playgroud)

...导致编译时错误:" 属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式 ".

.net c# visual-studio-2010

17
推荐指数
2
解决办法
4769
查看次数

标签 统计

c# ×2

.net ×1

attributes ×1

visual-studio-2010 ×1