privatestaticICollection<TypeData> GetPlugins(PluginSearcher searcher, string baseTypeFullName) { TypeData baseType; if (!searcher.AllTypes.TryGetValue(baseTypeFullName, out baseType)) return Array.Empty<TypeData>();
var specializations = new List<TypeData>(); foreach (TypeData st in baseType.DerivedTypes) { if (st.TypeAttributes.HasFlag(TypeAttributes.Interface) || st.TypeAttributes.HasFlag(TypeAttributes.Abstract)) continue; if(shouldLoadAssembly(st.Assembly.Name, st.Assembly.Version)) specializations.Add(st); } return specializations; }
# 1. 创建测试目录 mkdir -p /tmp/opentap-plugin-test cd /tmp/opentap-plugin-test
# 2. 创建简单的测试插件 cat > TestPlugin.cs << 'EOF' using OpenTap; using System;
[Display("My Test Plugin")] public class TestPlugin : ITapPlugin { public string Name => "Test Plugin"; public string Description => "A simple test plugin"; } EOF