Я думаю, что у вас действительно есть несколько проблем с этим кодом.
1. Вы подтвердили, что ваш тип AppService
создается?Поскольку вы не [Export]
-ing это, я не могу видеть, как это генерируется.Если вы не извлекаете экземпляр AppService
из контейнера, вы должны вручную выполнить импорт:
var service = new AppService();
container.ComposeParts(service);
2.В вашем дизайне класса есть метод static
, к которому вы пытаетесь обратитьсяinstance
свойство.Я предполагаю, что вы пытаетесь это сделать по одной из двух причин.Либо вы предполагаете, что interface
для IService
поддерживает статические операции (чего они не могут), либо вы вызываете метод расширения, поддерживающий тип IService
, который не выполняется из-за первого аргумента подозреваемого метода расширенияимеет значение null:
public static int Calc(this IService service)
{
return service.Calc(); // failing perhaps?
}
Если это последний сценарий метода расширения, он предлагает что-то похожее на 1), где вам нужно подтвердить, что ваш тип AppService
создается после его создания.
Тот факт, что у вас есть метод static
, пытающийся получить доступ к свойству instance
, говорит мне, что вам, возможно, все равно придется переосмыслить свой дизайн и удалить модификатор static
:
public int Calc()
{
return MyService.Calc();
}
Но опять же, ваша собственность является публичной, поэтому этот метод вообще используется? Ваш текущий пример не должен даже компилироваться, так как вы пытаетесь получить доступ к свойству экземпляра из статического метода.