gpt4 book ai didi

c# - 根据类型参数实例化新对象

转载 作者:太空狗 更新时间:2023-10-30 00:44:19 30 4
gpt4 key购买 nike

我正在尝试根据传递给方法的异常类型参数抛出异常。

这是我到目前为止所拥有的,但我不想指定每种异常:

public void ThrowException<T>(string message = "") where T : SystemException, new()
{
if (ConditionMet)
{
if(typeof(T) is NullReferenceException)
throw new NullReferenceException(message);

if (typeof(T) is FileNotFoundException)
throw new FileNotFoundException(message);

throw new SystemException(message);
}
}

理想情况下,我想做类似 new T(message) 的事情,因为我有一个 SystemException 的基本类型,我本以为这在某种程度上是可能的。

最佳答案

我不认为你可以单独使用 gerics 来做到这一点。您将需要使用反射。像这样的东西:

throw (T)Activator.CreateInstance(typeof(T),message);

关于c# - 根据类型参数实例化新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8164430/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com