gpt4 book ai didi

c# - 我可以在创建值之前获取惰性值的类型吗?

转载 作者:行者123 更新时间:2023-12-03 21:44:50 24 4
gpt4 key购买 nike

假设我有一个类“MyClass”,其私有(private)列表属性按以下方式设置:

List = new List<Lazy<BaseClass>> {
new Lazy<BaseClass>(() => new DerivedClassA(x)),
new Lazy<BaseClass>(() => new DerivedClassB(x, y)),
new Lazy<BaseClass>(() => new DerivedClassC())
};
和同一个类的一个方法:
public void OpenTab<T>();
我想这样称呼:
myClassObject.OpenTab<DerivedClassA>();
然后将在 MyClass 中设置一个属性使用来自 List 中的惰性实例的值它创建了该类型。
有没有办法可以使用 OpenTab 中的类型参数?确保我只从创建指定类型值的惰性实例列表中创建值?

最佳答案

不,但您可以将它们存储在 Dictionary<Type, Lazy<Type>>

List = new Dictionary<Type, Lazy<BaseClass>> {
[typeof(DerivedClassA)] = new Lazy<BaseClass>(() => new DerivedClassA(x)),
[typeof(DerivedClassB)] = new Lazy<BaseClass>(() => new DerivedClassB(x, y)),
[typeof(DerivedClassC)] = new Lazy<BaseClass>(() => new DerivedClassC())
};

public void OpenTab<T>()
{
var instance = List[typeof(T)].Value;
// Do whatever
}

关于c# - 我可以在创建值之前获取惰性值的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65221569/

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