我有一个通用类
class ImportFeed<T> where T : Product, new()
{
public ImportFeed(string Filename)
{
}
}
和
class Product {
}
class DerivedProduct : Product {
}
class DerivedProduct2 : DerivedProduct {
}
我遇到的问题是,我需要有条件地声明ImportFeed,例如:
switch (i) {
case 1: ImportFeed<Product> feed = new ImportFeed<Product>("feed.xml")
case 2: ImportFeed<DerivedProduct> feed = new ImportFeed<DerivedProduct("feed.xml")
case 3: ImportFeed<DerivedProduct2> feed = new ImportFeed<DerivedProduct>"feed.xml")
}
但是,当我这样做时,变量的范围只是switch语句的范围。我还尝试在switch语句之前使用基类类型声明变量。
ImportFeed<Product> feed;
,然后为变量分配派生类型
例如
feed = new ImportFeed<DerivedProduct>"feed.xml")
但是我收到一个错误,即ImportFeed无法隐式转换为ImportFeed
我也尝试过在switch语句之外使用动态声明,但是稍后在代码中我无法在该对象上使用Lambda表达式。
请让我知道我要去哪里错了,我似乎已经退缩了。