通用<t>和2基类继承</t>

时间:2013-10-22 23:35:59

标签: c# generics inheritance

我有一个问题,我对这个问题感到有点困惑。这可能很容易,但我只是错过了它。

如果我有一个包含必要结构的类,那么结构可以继承。我需要一个通用的方法,传递给然后使用。例如,假设我有一个结构Test,Test-A继承自Test。然后我有一个继承自Test-A的MyTest和MyTest-B。

如何使用T创建一个方法,以便我可以提供MyTest和MyTest-B,我可以在方法中使用它们中的任何一个?

所以:

public class Test
{
    public int Hello {get; set; }
}

pubilc class Test-A : Test
{  
   public string Name { get; set; }
}

public class MyTest : Test-A
{
   public string Last { get; set; } 
}

public class MYTest-B : Test-A
{
   public int Age {get; set; }
}

我需要一个方法:

private void MyList<T>(List<T> TestList) where T : **{not sure what this would be}**
{
    TestList.Age = 10;

    **OR** 

    TestList.Name = "Jane";
}

我是如何或缺少什么(或不理解)能够做到这一点?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

没有可以使用的限制,这些限制将匹配这两个条件。处理这个问题的唯一方法是使用两个重载方法,因为没有共享契约。

通用约束仅在共享所有类型实现的基类或接口时才有效,并且使用相同的契约(即:两者都具有Name Age属性)。

答案 1 :(得分:0)

  

如何使用T创建方法,以便我可以同时提供 MyTest 和   MyTest-B和我可以在方法中使用它们中的任何一个吗?

     **TestList.Age = 10;**

     ...

如果传入MyTest类型的对象,假设MyTest没有Age属性,那么这将如何工作?