gpt4 book ai didi

c# - 通过字符串名称获取抽象类

转载 作者:行者123 更新时间:2023-12-02 16:16:24 25 4
gpt4 key购买 nike

我有两门课:

  class Car<T>
{
public string color { get; set; }
public virtual T features { get; set; }
public virtual void TestDrive();
}
class Toyota : Car<ToyotaFeatures>
{
public override ToyotaFeatures features { get; set; }
public override void TestDrive()
{
//Logic here...
}
}

现在我有一个完整的字符串类名称:“MySol.MyProj.Toyota”
我想通过我的字符串名称实例化一个类,然后运行 ​​TestDrive()。
问题是,当我尝试运行 Activator.CreateInstance(null, "MySol.MyProj.Toyota");
我无法将其转换为基类并运行 testDrive,因为它期望将 ToyotaFeatures 类传递给它。但我只想运行仅具有字符串类名的 TestDrive()。

而且我不想将其转换为特定类型。仅适用于基本类型,因此它可以根据提供的字符串决定运行哪个 TestDrive()。

最佳答案

为此目的,界面非常好。

interface ITestDrivable
{
void TestDrive();
}

您的抽象类实现接口(interface):

class Car<T> : ITestDrivable
{
public string Color { get; set; }
public virtual T Features { get; set; }
public abstract void TestDrive() { }
}

选角非常容易:

ITestDrivable car = (ITestDrivable)Activator.CreateInstance(null, "MySol.MyProj.Toyota");
car.TestDrive();

关于c# - 通过字符串名称获取抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914613/

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