编译含依赖的字符串类时遇RequiredAttribute找不到错误
解决动态编译中找不到RequiredAttribute的问题
你遇到的问题根源是动态编译的代码字符串里没有导入RequiredAttribute所在的命名空间——虽然你的编译逻辑已经添加了程序集引用,但动态代码本身没有告诉编译器Required类型来自哪个命名空间,所以会报找不到类型的错误。
有两种直接的解决办法:
方法1:在动态代码中添加using指令
在你的classString开头加上命名空间导入语句:
string classString = "using System.ComponentModel.DataAnnotations; public class ModelClass { public int Id { get; set; } [Required] public int ProjectId { get; set; } [Required] public string ModelName { get; set; } [Required] public string ClassCode { get; set; } public ModelClass() { ModelName = string.Empty; ClassCode = string.Empty; } }";
方法2:使用全限定类名标注特性
如果不想添加using,可以直接用RequiredAttribute的全限定名称替换[Required]:
string classString = "public class ModelClass { public int Id { get; set; } [System.ComponentModel.DataAnnotations.Required] public int ProjectId { get; set; } [System.ComponentModel.DataAnnotations.Required] public string ModelName { get; set; } [System.ComponentModel.DataAnnotations.Required] public string ClassCode { get; set; } public ModelClass() { ModelName = string.Empty; ClassCode = string.Empty; } }";
修改后再执行编译逻辑,就能正常识别RequiredAttribute了。
内容的提问来源于stack exchange,提问作者CloudAnywhere
相关产品推荐
相关产品推荐

