说我有,其存储泛型参数输入值的通用接口:多个类
public interface IFoo<TValue>
{
TValue SomeValue { get; set; }
}
然后,我有两个班,StringFoo
和DoubleFoo
其SomeValues
是string
S和double
小号分别为:
public class StringFoo : IFoo<string>
{
string SomeValue { get; set; }
}
public class DoubleFoo : IFoo<double>
{
double SomeValue { get; set; }
}
我现在决定,我想,可以同时包含StringFoo
S和数组个S:
var foos = IFoo<object>[] {
new StringFoo { SomeValue = "a value" },
new DoubleFoo { SomeValue = 123456789 }
}
我倒是觉得,因为这两个string
和double
是object
子类,他们都希望能在这个数组中允许的。但是,我认为是错误的。
所以,我尝试使用协方差:
public interface IFoo<out TValue>
,但由于接口同时包含getter和setter方法,我不能这样做。
那么,可以在一个数组中实现通用接口的两个类?
的可能的复制[C# - 在一个列表中的多个泛型类型(https://stackoverflow.com/questions/353126/c-sharp-multiple-generic-types-in-one-list) – Fruchtzwerg
列表和T []是完全不同的结构,显然可以从一个转换到另一个,但可能会根据未来的语言设计显示非常不同的行为决策及其基础运行时实现。这就是为什么这个问题完全不同。事实上,从语言理论的角度来看,今天的答案相似或相同并不重要。 –