将类型列表作为泛型参数传递

3
我想知道是否可以将类型列表作为通用参数传递。 我有一个需要获取不确定数量类型并与它们一起工作的类。 像这样:
class o<TTypeCollection>
{
    private void someMethod()
    {

        repository.Save < TTypeCollection.First() > (MyCollectionViewSource.CurrentItem as TTypeCollection.First());

    }
}

1
看看 .net 4.0 中的元组(Tuple)。 - Sandeep
在 C# 中无法进行模板元编程,如果这是你在询问的。 - Sergey Kalinichenko
1个回答

2

在C#中,无法像C++那样进行模板元编程,但是可以使用反射来实现:

private void someMethod() {
    var genericSave = repository // This can be done during initialization
        .GetType()
        .GetMethods()
        .Where(m => m.Name == "Save" && m.IsGenericMethodDefinition);
    var t = MyCollectionViewSource.CurrentItem.GetType();
    genericSave
        .MakeGenericMethod(new[] {t})
        .Invoke(new object[] {MyCollectionViewSource.CurrentItem});
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接