كيفية الحصول على قلعة وندسور لدعوة منشئ parameterless؟

StackOverflow https://stackoverflow.com/questions/821944

سؤال

وحاليا لدي الدرجة التي تبدو مثل هذا:

public class MyClass : IMyClass
{
   public MyClass()
   {
      //...
   }
   public MyClass(IMyRepository repository)
   {
      //...
   }
}

في ملف التكوين بلدي لدي IMyClass مسجلة، ولكن ليس IMyRepository. نيتي هي لوندسور لاستخدام منشئ أن لا يأخذ أية معلمات، ولكن أنا على الحصول على هذه الرسالة:

<اقتباس فقرة>   

لا يمكن إنشاء مكون 'MyClass' كما   له تبعيات ليتم satisified كنت.   MyClass تنتظر التالية   تبعيات:

     

والخدمات:   - Namespace.IMyRepository التي لم يتم تسجيله

ولقد وجدت آخر مشاركة التي تقول أن الحاوية سوف ندعو منشئ مع معظم الحجج التي يمكن أن تلبي. فلماذا لا تحاول الاتصال منشئ مع حجة أنه لا يعرف كيفية إرضاء؟

هل كانت مفيدة؟

المحلول

وربما كنت تستخدم نسخة قديمة من ويندسور ... وهذا يعمل على ما يرام بالنسبة لي:

[TestFixture]
public class WindsorTests {

    public interface ISomeInterface {}

    public class AService {
        public int Id { get; private set; }

        public AService() {
            Id = 1;
        }

        public AService(ISomeInterface s) {
            Id = 2;
        }
    }

    [Test]
    public void Parameters() {
        var container = new WindsorContainer();
        container.AddComponent<AService>();
        var service = container.Resolve<AService>();
        Assert.AreEqual(1, service.Id);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top