gpt4 book ai didi

c# - 类型转换基类引用到它的实际类型

转载 作者:行者123 更新时间:2023-11-30 19:43:57 25 4
gpt4 key购买 nike

我有一个 BaseFilter 类和一些 BaseFilter 类的派生类。

1. List<base> list = getFilters();
2. foreach(Base filter in list){
3. var filterType = filter.GetType();
4. var filter1 = filter as filterType;
5. //DO SOME DERIVED CLASS OPERATION
6. }

我在代码第 3 行遇到错误。挑战是过滤器可以是任何派生类类型。有什么方法可以将过滤器对象类型转换为它的实际派生类吗?

我收到以下错误:找不到类型或命名空间名称“filterType”(是否缺少 using 指令或程序集引用?)

正确的做法应该是什么?

最佳答案

Is there any way to typecast the filter object to its actual derived class?

没有。您必须知道要在编译时 转换为的类型。

如果你不知道那个类型,你怎么知道要执行哪个操作?如果您对所有类型执行相同的操作,则该操作应该存在于基类中(可能以抽象形式)。

基本上,目前您的请求不是一个有用的请求 - 但如果您可以提供更多关于您实际尝试做的事情的详细信息,以及为什么您认为“投向actual type"比较合适,我们也许可以为您提供更多帮助。

某些情况下,您可能会发现使用dynamic 会有所帮助 - 但我只会在更清洁的方法失败后将其用作最后的手段 - 我们在不知道您要实现的目标的情况下,无法就这些更清洁的方法向您提供建议。

关于c# - 类型转换基类引用到它的实际类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13524632/

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