是的,我知道我完全会用这个看起来像个白痴,但今天早上我的大脑并没有开始运转。
我想有一种方法,我可以说“如果它变坏了,就带着这种类型的异常回来”,对吧?
例如,类似(这不起作用):
static ExType TestException<ExType>(string message) where ExType:Exception
{
Exception ex1 = new Exception();
ExType ex = new Exception(message);
return ex;
}
现在让我感到困惑的是,由于where子句,我们知道泛型类型将是异常类型。但是,代码失败了,因为我们不能将Exception隐式转换为ExType。我们也不能显式转换它,例如:
static ExType TestException<ExType>(string message) where ExType:Exception
{
Exception ex1 = new Exception();
ExType ex = (ExType)(new Exception(message));
return ex;
}
因为那也失败了..那么这种事情可能吗?我有一种强烈的感觉,它会变得非常简单,但是我和老头子度过了艰难的一天,所以让我放松一下:P
更新
谢谢大家的回答,看来我不是一个完全的白痴!;)
好的,所以Vegard和Sam让我可以实例化正确的类型,但显然卡住了,因为消息参数在实例化后是只读的。
马特的反应一针见血,我已经对此进行了测试,一切正常。这是示例代码:
static ExType TestException<ExType>(string message) where ExType:Exception, new ()
{
ExType ex = (ExType)Activator.CreateInstance(typeof(ExType), message);
return ex;
}
甜的!:)
多谢你们!