私はいくつかのプラグインに使用している効率的なインターフェースを設計しようとしています。私はまともなインターフェースを見つけたと思いましたが、それを実装しようとしてもうまくいきません。だから私は、ここにいる誰かがこれをどのように行うことができるかについていくつかのより良い提案があるかどうかを見たいと思っていました。「'GetEnumerator'のパブリック定義が含まれていません」とエラーになります
プラグインインターフェース:
namespace ALeRT.PluginFramework
{
public interface IQueryPlugin
{
string PluginCategory { get; }
string Name { get; }
string Version { get; }
string Author { get; }
System.Collections.Generic.List TypesAccepted { get; }
}
interface IQueryPluginRBool : IQueryPlugin
{
bool Result(string input, bool sensitive);
}
interface IQueryPluginRString : IQueryPlugin
{
string Result(string input, bool sensitive);
}
}
本質的に、使用する必要のあるタイプのリスト(タイプは、URL、名前、電子メール、IPなど)を取得して、クエリプラグインの値と比較しようとしています。各クエリプラグインは、受け入れる複数のタイプを持つ可能性があります。それらが一致すると、クエリプラグインにあるアクションを実行します。
[ImportMany]
public IEnumerable<IQueryPlugin> QPlugins { get; set; }
private void QueryPlugins(List<string> val, bool sensitive)
{
foreach (string tType in val) //Cycle through a List<string>
{
foreach (var qPlugins in this.QPlugins) //Cycle through all query plugins
{
foreach (string qType in qPlugins) //Cycle though a List<string> within the IQueryPlugin interface AcceptedTypes
{
if (qType == tType) //Match the two List<strings>, one is the AcceptedTypes and the other is the one returned from ITypeQuery
{
//Do stuff here
}
}
}
}
}