提供类型数组作为方法参数
本文关键字:方法 参数 数组 类型 | 更新日期: 2023-09-27 18:28:28
我有一个相当简单的方法:
public static LinkItemCollection ToList<T>(this LinkItemCollection linkItemCollection)
{
var liCollection = linkItemCollection.ToList(true);
var newCollection = new LinkItemCollection();
foreach (var linkItem in liCollection)
{
var contentReference = linkItem.ToContentReference();
if (contentReference == null || contentReference == ContentReference.EmptyReference)
continue;
var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
IContentData content = null;
var epiObject = contentLoader.TryGet(contentReference, out content);
if (content is T)
newCollection.Add(linkItem);
}
return newCollection;
}
这很好——我可以调用该方法并提供一个T类型。但是,我希望能够指定多个类型。因此,我错误地认为我可以将该方法重构为:
public static LinkItemCollection ToList(this LinkItemCollection linkItemCollection, Type[] types)
{
var liCollection = linkItemCollection.ToList(true);
var newCollection = new LinkItemCollection();
foreach (var linkItem in liCollection)
{
var contentReference = linkItem.ToContentReference();
if (contentReference == null || contentReference == ContentReference.EmptyReference)
continue;
foreach (var type in types)
{
var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>();
IContentData content = null;
var epiObject = contentLoader.TryGet(contentReference, out content);
if (content is type)
newCollection.Add(linkItem);
}
}
return newCollection;
}
但是,Visual Studio显示它无法解析if(content is type)
行上类型的符号。
我知道我做错了什么,我想我需要在这里使用反射。
您要查找的是:
type.IsAssignableFrom(content.GetType())
is
仅用于针对编译时已知的类型进行检查,而不是在运行时。