c# - 将类型列表作为通用参数传递

标签 c#

我想知道是否可以将类型列表作为泛型参数传递。 我有一个类需要获得无限数量的类型并与它们一起工作。 像这样:

class o<TTypeCollection>
{
    private void someMethod()
    {

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

    }
}

最佳答案

无法在 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});
}

关于c# - 将类型列表作为通用参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073406/

相关文章:

c# - 如何使用 MathNet.Symbolics 简化公式?

c# - 获取导航属性的 Count() 而无需在 Entity Framework 中加载整个集合

c# - 将事件或命令分配给 ResourceDictionary 中的 DataTemplate

c# - Windows 窗体中的 Gif

c# - MigraDoc - 从十六进制设置单元格颜色

c# - Asp.net MVC 4 和 SolrNet 编程

c# - 在c#中,如何检查线程池中的线程是工作线程还是I/O线程?

c# - 检查 single() LINQ 是否返回 NULL

c# - 使用 Canvas 作为 ItemsPanelTemplate 和绑定(bind) Canvas.Top 不起作用

c# - 是否可以将 Windows 窗体中的表格用作矩阵?