【问题标题】:C# inheritance generic classes with constraints带有约束的 C# 继承泛型类
【发布时间】: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&lt;AnyType&gt;&gt; : A&lt;AnyType&gt; 有一个额外的&gt;,那是你的语法错误。
  • C# 没有模板。它有泛型。泛型类型参数可以被约束,这就是where。我建议对标题和标签进行编辑以反映这一点。

标签: c# generics inheritance generic-constraints


【解决方案1】:

你的界面应该是:

public interface IGenericTeacher<T> where T : IGenome<T>
{
    //...
}

【讨论】:

  • 我犯的那个错误是因为我赶时间,所以,我添加了实际代码,这不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多