Can you provide us the context of your question? It is hard to understand what you're trying to do.
In academic terms a static class is a class that contains nothing but static members as discussed here. A static member is used when the member does not need any instance-level data to do its work. In other words it provides some global functionality (or data) that can be used without first creating an instance of a class. Common utility functions like Math.Max
and DateTime.Today
are good examples. They just rely on data given to them as parameters or they work against data that is global to the application. Honestly a static class is just a design decision to ensure that a class that shouldn't have instance members doesn't accidentally get created as one. Ultimately what you have to decide, for each member of a class, is whether it should be static or instance member. You can read more about that here.
DI involves using types in code without knowing the actual implementation of that type in advance. DI decouples the creation of a dependency from its usage. You can read more about it here. Static classes cannot be part of DI because DI requires the DI container to create an instance of the dependency. Since static classes don't have instances then DI doesn't apply here. You can just use static classes directly in the code that depends on it.
Without an understanding of what you're trying to understand/figure out it is hard to provide more clear differences.