【发布时间】:2017-02-26 13:00:47
【问题描述】:
所以,我有一个界面:
interface A<SomeType>
{
SomeType Abc(SomeType);
.....
}
我有一堂课:
class B<ShouldBeClassA<AnyType>>
where ShouldBeClassA<AnyType> : A<AnyType>
{ ShouldBeClassA<AnyType> someVariable; .....}
但这会导致语法错误,我想要的是强制 someVariable 是
A<AnyType>
所以我可以这样做:
class B......
{
....
void Method()
{
someVariable.Abc(anyTypeVariable);
}
......}
你能告诉我,如何解决这个问题吗?
下面是实际代码:
public interface IGenericTeacher<Genome<GenomeType>>
where Genome<GenomeType> : IGenome<GenomeType>
{
/// <summary>
/// Pass the tests and save the results.
/// </summary>
void PassTests();
/// <summary>
/// Passing generation, according to the results.
/// </summary>
void PassGeneration();
}
public interface IGenome<GenomeType>
{
.......
【问题讨论】:
-
where ShouldBeClassA<AnyType>> : A<AnyType>有一个额外的>,那是你的语法错误。 -
C# 没有模板。它有泛型。泛型类型参数可以被约束,这就是
where。我建议对标题和标签进行编辑以反映这一点。
标签: c# generics inheritance generic-constraints