gpt4 book ai didi

c# - 如何在 C# 中强制转换为类型

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:51 25 4
gpt4 key购买 nike

谁能解释如何让它工作?我传入了类型名称,并且“t”被正确填充。我只是不知道如何将 objectToCast 转换为类型“t”。任何帮助表示赞赏。

....
Type t = Type.GetType("castToTypeNameHere");
o = CastTo<t>(objectToCast);
....

private T CastTo<T>(Object obj)
{
return (T)obj;
}

仅供引用,这是我找到的答案:
Type t = Type.GetType(element.Attribute("castToType").Value);
MethodInfo castMethod = this.GetType().GetMethod("CastTo", BindingFlags.Instance | BindingFlags.NonPublic).MakeGenericMethod(t);
object castedObject = castMethod.Invoke(this, new object[] { objectToCast });

最佳答案

当你使用泛型(没有反射)时,类型参数必须是类型的名称,而不是 System.Type 的实例。 .所以你不能说

Type t = Type.GetType("castToTypeNameHere");
o = CastTo<t>(objectToCast);

因为 t不是类型的名称。好像你说过
o = CastTo<typeof(int)>(objectToCast);

代替
o = CastTo<int>(objectToCast);

前者是非法的,后者是合法的。

我不明白你想要达到什么目的。如果您在编译时不知道类型,那么这样的强制转换是没有用的。编译器不知道 o 的类型,并且您不会获得任何编译时类型安全或 IntelliSense 功能。

关于c# - 如何在 C# 中强制转换为类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4959320/

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