代码合同:当第三方库不支持时,您会感到紧张.
public voID Buy(Product product){ Contract.Requires(product != null);}
postsharp:自定义属性.
public voID Buy([NotNull] Product product){}
Guard-Class:带有辅助方法的静态类.
public voID Buy(Product product){ Guard.NotNull(product,"product"); // Repeat parameter name,bad for refactoring. Guard.NotNull(() => product); // Slow}
手册:
public voID Buy(Product product){ if (product == null) { throw new ArgumentNullException("product"); }}
对于最后一个版本的roslyn,可以选择编写扩展来简化验证.对于90%我检查空引用或空字符串,所以有这样的东西可能是有价值的:
public voID Buy(required Product product){}public voID Buy(Product product){ requires product}public voID FindUser(required nonempty string name){ requires nonempty name}
所以我的问题:
>有任何roslyn扩展或其他后编译器吗?
>你知道如何编写像这样的自定义扩展的好资源.
>您会使用这样的扩展吗?如果是,那么首选语法是什么.如果没有,为什么?
我不是100%肯定,但你必须修改语法,引入新的令牌和语法树节点.然后,您必须指定应该为该构造发出何种IL.这不是一件小事.之后您将获得自己的C#版本,以及您自己的C#编译器版本.
它只适用于使用此版本编译器的人.
我不认为这是个好主意.
总结以上是内存溢出为你收集整理的c# – Parameter.Checking with Roslyn全部内容,希望文章能够帮你解决c# – Parameter.Checking with Roslyn所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)