الوحدة حل فئات متعددة
-
25-09-2019 - |
سؤال
كيف أحصل على وحدة Microsoft "بناء" قائمة الفئات لنوع واجهة معين.
مثال بسيط جدا:
List<IShippingCalculation> list = new List<IShippingCalculation>();
list.Add(new NewYorkShippingCalculation());
list.Add(new FloridaShippingCalculation());
list.Add(new AlaskShippingCalculation());
//Not What I want
public void calcship(List<IShippingCalculation> list)
{
var info = new ShippingInfo(list);
info.CalculateShippingAmount(State.Alaska)
}
//Somehow in unity, must i do this for all the concrete classes?
//how does it know to give a list.
Container.RegisterType<IShippingInfo,new AlaskaShippingCalculation()>();??
//What I want
public void calcship(IShippingInfo info)
{
info.CalculateShippingAmount(State.Alaska)
}
شكرًا لك!
المحلول
إذا كنت تستخدم الوحدة 2 يمكنك استخدامها ResolveAll<T>
Container.RegisterType<IShippingInfo,FloridaShippingCalculation>("Florida");
Container.RegisterType<IShippingInfo,NewYorkShippingCalculation>("NewYork");
Container.RegisterType<IShippingInfo,AlaskaShippingCalculation>("Alaska");
IEnumerable<IShippingInfo> infos = Container.ResolveAll<IShippingInfo>();
عليك أن تعطي اسمًا لكل تسجيل لأن SoloLveall لن يعيد سوى التسجيلات المسماة.
نصائح أخرى
لا تحتاج إلى أن يكون لديك الحاوية كمعلمة ، وتسجيل أنواع الخرسانة بأسماء كما هو مذكور أعلاه ، ثم في المُنشئ إضافة صفيف حيث لا يعمل المعلمة أو التعداد العام أو العام العام.
public MyConstructor(IMyType[] myTypes)
لا تنتمي إلى StackOverflow