指定された抽象クラスの汎用T
パラメータを受け入れる関数に渡される抽象クラスの実装があります。しかし何らかの理由で、具体的なクラスが指定されたコンテキストで有効ではないというエラーが表示されます。具体的なクラスは、型として渡されたときに特定のコンテキストでは無効です
何が起こっているかについてのアイデアは高く評価されます。
ヘルパーメソッド
public static async Task<bool> StartSingleAppService<T>(T type) where T : Service
{
// GetServiceMaintainer() gets a singleton of my Services list
if (ServiceMaintainer.GetServiceMaintainer() != null)
{
Service service = ServiceMaintainer.GetServiceMaintainer().FindServiceByType(type);
if (await ServiceMaintainer.StartService(service))
{
return true;
}
}
return false;
}
使用
// `UpdateService` is type not valid in the given context
await AppServices.StartSingleAppService(UpdateService);
UpdateService
public class UpdateService : Service
サービス
public abstract class Service
注:
Service
抽象クラスは、抽象タスク・メソッドを定義します。public abstract Task<bool> start();
Service
抽象クラスは、カップルのメンバ変数- クラスは抽象メソッドを実装し、カップルのヘルパー関数を持って定義しています。
は、エラーの完全なコンテンツだけでなく、 'UpdateService'変数の宣言を投稿してください。 –
@JonBそれは変数ではありません。これは型として扱われるクラスです。エラーは私が述べた以上のものではありません。 – visc
'UpdateService'クラスのオブジェクトを使ってメソッドを呼び出すのですか、それとも' UpdateService'型をメソッドに渡していますか? –