gpt4 book ai didi

c# - 如何动态转换对象?

转载 作者:太空狗 更新时间:2023-10-29 22:33:34 24 4
gpt4 key购买 nike

我很确定之前有人问过这个问题,但不幸的是我唯一找到的是 this那不是我的解决方案。在我当前的项目中,我做了类似的事情:

private object obj;

private void Initialize()
{
obj.Initialize();
}

private void CreateInstanceA()
{
obj = Activator.CreateInstance(typeof(MyClassA));
}

private void CreateInstanceB()
{
obj = Activator.CreateInstance(typeof(MyClassB));
}

这段代码当然不起作用,因为我没有转换obj,因为它的类型是动态变化的。

如何动态转换?

最佳答案

三个选项:

  • 如果您控制这两个类,并且可以让它们实现一个包含您需要的一切的通用接口(interface),那么就这样做 - 并转换为接口(interface)
  • 如果您使用的是 C# 4 和 .NET 4,则可以使用动态类型 - 只需将变量声明为 private dynamic obj; 它会编译并在执行时找到正确的方法
  • 否则,使用反射查找并调用该方法。

基本上,基于执行时间类型的转换没有意义,因为转换的目的之一是为编译器提供更多信息……而您在这种情况下根本就没有。

如果您可以实现,第一个选项是目前为止最好的。

关于c# - 如何动态转换对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10835215/

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