سؤال

ولدي مشكلة مع:

NHibernate.Cfg.Configuration.SetProperties()

وليس قبول IDictionary: NHibernateConfigHandler

وأحصل على الرسائل:

وخطأ 30 انتهت المباراة طريقة أفضل طاقتها ل"NHibernate.Cfg.Configuration.SetProperties (System.Collections.Generic.IDictionary)" لديه بعض الحجج الباطلة

و

وخطأ 31 حجة '1': لا يمكن تحويل من 'System.Collections.IDictionary' إلى 'System.Collections.Generic.IDictionary'

يرجى تقديم المشورة؟


وأسلوب كلها:

/// <param name="config">NHibernate configuration</param>
public ISessionFactory GetSessionFactoryFor(NHibernateConfigHandler config)
{
if (config == null)
    throw new ArgumentNullException("config may not be null nor empty");

ISessionFactory sessionFactory = GetSessionFactoryFor(config.MappingAssembly);

//  Failed to find a cached SessionFactory so make a new one.
if (sessionFactory == null)
{
    NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();

    cfg.SetProperties(config.Properties); //THIS LINE

    cfg.AddAssembly(config.MappingAssembly);

    //  Now that we have our Configuration object, create a new SessionFactory
    sessionFactory = cfg.BuildSessionFactory();

    if (sessionFactory == null)
    {
        throw new InvalidOperationException("cfg.BuildSessionFactory() returned null.");
    }

    HttpRuntime.Cache.Add(config.MappingAssembly, sessionFactory, null, DateTime.Now.AddDays(7),
        TimeSpan.Zero, CacheItemPriority.High, null);
}

return sessionFactory;

و}

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

المحلول

وتوقيع SetProperties هو

public NHibernate.Cfg.Configuration SetProperties(System.Collections.Generic.IDictionary<string,string> newProperties)
    Member of NHibernate.Cfg.Configuration

وSetproperties يأخذ معلمة من نوع IDictionary، أي بمعنى عام القاموس. وتحاول تمرير في IDictionary. أن يكون سبب الخطأ.

وإما يمكنك تغيير النوع من العقارات في NHibernateConfigHandler إلى System.Collections.Generic.IDictionary. أو إنشاء System.Collections.Generic.IDictionary ونسخ كل القيم من System.Collections.IDictionary.

وانها دائما كفاءة استخدام قاموس عام (والذي هو على System.Collections.Generic) على IDictionary (والذي هو على System.Collections).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top