不幸的是,我没有意识到任何其他的方法(我还不得不多次编写这样的代码)。
你能做的一件事就是
Where
在第一种方法中,更好一点:
private List<Type> GetListOfGenericSerializers()
{
Type interfaceGenricType = typeof(ISerializeDeserialize<>);
var serializers =
from assembly in AppDomain.CurrentDomain.GetAssemblies()
from genericType in assembly.GetTypes()
from interfaceType in genericType.GetInterfaces()
where genericType.IsGenericTypeDefinition &&
interfaceType.IsGeneric &&
interfaceType.GetGenericTypeDefinition() == interfaceGenericType
select genericType;
return serializers.ToList();
}