c# – 关于投掷助手的想法

c# – 关于投掷助手的想法,第1张

概述为了减少冗余代码,我有一些throw辅助方法: protected static X ThrowInvalidOperation(string operation, X a, X b) { throw new InvalidOperationException("Invalid operation: " + a.type.ToString() + " " + operation + " " 为了减少冗余代码,我有一些throw辅助方法:
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# – 关于投掷助手的想法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1251756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存