列出泛型和铸件

Mic*_*l G 0 c# generics casting

我有两个类:Media和Container.

我有两个清单List<Media>List<Container>

我将这些列表传递给另一个函数(一次一个);

它可以是一个或另一个;

什么是检查列表的"模板"类型的正确方法,所以我可以根据列表类型调用一个相关的方法?

或者我应该尝试转换到List <>并将Try/Catch块放在它周围?

    Object tagObj = mediaFlow1.BackButton.Tag;

    if (tagObj == Media)
       //do this
    else if (tagObj == Container)
        //do this
    else
        throw new Exception("Not a recognized type");
Run Code Online (Sandbox Code Playgroud)

Amy*_*y B 11

正确的做法是为此函数提供两个重载,接受每种类型:

public void MyMethod(List<Media> source)
{
  //do stuff with a Media List
}

public void MyMethod(List<Container> source)
{
  //do stuff with a Container List
}
Run Code Online (Sandbox Code Playgroud)