protected static X ThrowInvalIDOperation(string operation,X a,X b) { throw new InvalIDOperationException("InvalID operation: " + a.type.ToString() + " " + operation + " " + b.type.ToString());}
用法:
public static X operator +(X a,X b) { if (...) { return new X(...); } return ThrowInvalIDOperation("+",a,b); }
问题:因为运算符必须总是返回一个值,我通过使ThrowInvalIDOperation返回一个值并使用returnThrowInvalIDOperation(“”,b)调用它来修复它;
有许多不满 – 一个是因为我不能从返回不同类型的方法中调用它.
我希望有一种方法可以将辅助函数标记为“始终抛出异常”,因此编译器会停止跟踪返回值.
问:我有什么可能做到这一点?
解决方法 例外:protected static Exception MakeInvalIDOperation(string operation,X b){ return new InvalIDOperationException( "InvalID operation: " + a.type + " " + operation + " " + b.type);}
扔掉它:
throw MakeInvalIDOperation("+",b);
你的公司很好:
// Type: Microsoft.Internal.Web.Utils.ExceptionHelper// Assembly: WebMatrix.Data,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35// MVID: 3F332B40-45DB-42E2-A4ED-0826DE223A79// Assembly location: C:\windows\Microsoft.NET\assembly\GAC_MSIL\WebMatrix.Data\v4.0_1.0.0.0__31bf3856ad364e35\WebMatrix.Data.dllusing System;namespace Microsoft.Internal.Web.Utils{ internal static class ExceptionHelper { internal static ArgumentException CreateArgumentNullOrEmptyException(string paramname) { return new ArgumentException(CommonResources.Argument_Cannot_Be_Null_Or_Empty,paramname); } }}
虽然编写自己的自定义基于异常的类型(或基于InvalIDOperationException)并定义一些为您格式化消息的构造函数并不是那么多代码.
To reduce redundant code
当我听到这个时,我认为AOP由postsharp很好地实现了.如果你有很多冗余代码,你应该考虑AOP,但请记住它可能有点过分.
总结以上是内存溢出为你收集整理的c# – 关于投掷助手的想法全部内容,希望文章能够帮你解决c# – 关于投掷助手的想法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)