Вопрос в том, почему вы хотите внедрить его как интерфейс?Это потому, что класс реализует некоторые свойства / методы, которые вы хотели бы абстрагировать, чтобы его можно было заменить, или вы просто пытаетесь «навязать» ему интерфейс маркера, потому что «мы всегда зависим от интерфейсов, а не от конкретных классов»?Если это последний, то вы на неправильном пути, так как вы, вероятно, в любом случае просто бросили бы его к бетону.
Предполагая, что у первого из двух я вижу два варианта:
- Вместо этого используйте наследование.Это может или не может быть возможным в зависимости от того, какой класс был создан, но вы можете унаследовать его и заменить свой новый класс старым.
- Создайте интерфейс самостоятельно, с нужными вам методами / свойствами иобернуть внешний конкретный класс в класс, который реализует интерфейс.
Для варианта 2, если вы не можете наследовать, например, если вы заботитесь только об одном методе в классе (мы назовем его Method1 ()), вы создадите соответствующий интерфейс дляit:
public interface IMyNewInterface
{
void Method1();
}
Затем создайте его реализацию, которая принимает конкретный класс в качестве зависимости (вводимой вашим контейнером как обычно), которая просто вызывает конкретный класс:
public class MyNewClass : IMyNewInterface
{
private MyConcreteClass _MyConcreteClass;
public void MyNewClass(MyConcreteClass concreteClass)
{
_MyConcreteClass = concreteClass;
}
public void Method1()
{
_MyConcreteClass.Method1();
}
}