这会导致编译时异常:
public sealed class ValidatesAttribute<T> : Attribute
{
}
[Validates<string>]
public static class StringValidation
{
}
Run Code Online (Sandbox Code Playgroud)
我意识到C#不支持通用属性.然而,经过大量的谷歌搜索,我似乎无法找到原因.
有谁知道为什么泛型类型无法衍生出来Attribute
?任何理论?
有没有办法将lambda的字符串表示转换为lambda Func?
Func<Product, bool> func = Parse<Product, bool>("product => product.Name.Length > 0");
Run Code Online (Sandbox Code Playgroud)
我尝试了动态LINQ但它没有按预期工作 - 例如它不期望lambda语法=>.
答案摘要:
为什么我需要这个:因为没有办法将lambdas传递给自定义属性,比如
[Secure(role => role.CanDoThis && role.AllowedCount > 5)]
Run Code Online (Sandbox Code Playgroud)
因此,作为一种解决方法,我想将lambda作为字符串传递:"role => role.CanDoThis && role.AllowedCount> 5".但似乎我必须像这样使用DLINQ:"CanDoThis && AllowedCount> 5" - 因为这是它理解的语法.但我的问题是关于真正的lambdas,我在询问时已经使用过DLINQ了.