私はカスタムコントロールを持っており、このコントロールはユーザーに公開するインターフェイスを持っています。ジェネリッククラスを使用した非ジェネリックインターフェイスの実装
public interface ILookupDataProvider
{
void GetDataAsync(string parameters, Action<IEnumerable<object>> onSuccess, Action<Exception> onError);
}
ので、同じようにそれを実装する必要があります。だから、
public class LookupDataProvider<T> : ILookupDataProvider
{
public void GetDataAsync(string parameters, Action<IEnumerable<T>> onSuccess, Action<Exception> onError)
{
var query = new EntityQuery<T>();
this.entityManager.ExecuteQueryAsync(
query,
op =>
{
if (op.CompletedSuccessfully)
{
onSuccess(op.Results);
}
else if (op.HasError)
{
onError(op.Error);
}
});
}
}
、どのように私は、この一般的な方法は、実際のインターフェースの実装であることを教えていますか?
私はこれが正しい解決策だと思います - なぜ、クラスがもはやジェネリックパラメータを取らないように変更するのですか? –
@KirkWollは私の編集 – JoshBerke
を見ていますが、元の答えのように明示的なインターフェイス実装を使用していますが、クラスの型パラメータを残すことができます。私はそれが本質的ではないと言っているわけではありませんが、OPの元のコードをそれ以下に変更することが必要です。 –