I'm coding an archievement system as it follows:

IAchievement - Interface that all achievements must implement

AchievementManager - Class that with a user id checks for all achievements

My idea was to have a shared function on ArchivementManager as I could performe something like

```
AchievementManager.checkUser(userId)

```

Or 

```
AchievementManager.check(userId, achievementId)

```

Anyhow the AchivementManager should call a function check for each IAchievement implementation.

As it does not make any sense to have an instance for each Achievement I'm checking I was expecting to be able to declare the check method as Shared / Static. So inside the AchievementManager I could just call for

```
AchivementXXX.check(userId)

```

But I can't declare shared functions in my interface.

Is there any workaround? It is a bad aproach to inmplement an achievement system?

Edit:

This is not for a game but a website in ASP.NET