Свойство ObjectFactory
не предоставляется интерфейсом IApplicationContext
, но является частью интерфейса IConfigurableListableObjectFactory
.
Ваша переменная context
будет иметь логический тип IApplicationContext
, поскольку тип возвращаемого значения ContextRegistry.GetContext()
, поэтому в VS будет казаться, что свойство ObjectFactory
недоступно. Однако, если вы присмотритесь поближе, вы увидите, что XmlApplicationContext
имеет свойство ObjectFactory
, потому что оно реализует IConfigurableListableObjectFactory
. Как указывает Себастьян в своем ответе, большинство (если не все) контексты приложения реализуют этот интерфейс.
например:.
var ctx = new XmlApplicationContext("objects.xml");
ctx.ObjectFactory.RegisterSingleton("MyObject2", new MyClass() { Name = "MyObject2"});
var o2 = (MyClass)ctx.GetObject("MyObject2");
Assert.AreEqual("MyObject2", o2.Name);