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