Есть ли в Единице TryResolve?

Здесь дело обстоит не так, как с помощью IntervalIndex, мы сверяем с numpy броском доски

s1=df2.Start.values
s2=df2.Stop.values
s=df1.Value.values[:,None]
np.dot((s>=s1)&(s<=s2),df2.Fruit)
array(['Apple', 'Orange', 'Orange', 'Mango'], dtype=object)
14
задан BartoszKP 16 October 2015 в 14:56
поделиться

4 ответа

Это была проблема на сайте codeplex, вы можете найти здесь код (посмотрите внизу этой ветки, и они сделали метод расширения ... очень удобный)

http: // unity .codeplex.com / Thread / View.aspx? ThreadId = 24543

, и вы можете использовать такой код:

if (container.CanResolve<T>() == true)
{
    try
    {
        return container.Resolve<T>();
    }
    catch (Exception e)
    {
        // do something else
    }
}

CanResolve - это метод расширения. Я фактически регистрирую это расширение при создании контейнера ... примерно так:

private void CreateContainer()
{
    ExeConfigurationFileMap map = new ExeConfigurationFileMap();

    map.ExeConfigFilename = // path to config file

    // get section from config code goes here

    IUnityContainer container = new UnityContainer();
    container.AddNewExtension<UnityExtensionWithTypeTracking>();
    section.Containers.Default.Configure(container);        
}
9
ответ дан 1 December 2019 в 09:33
поделиться

Это недоступно в текущем выпуске. Тем не менее, вы всегда можете «свернуть свой собственный», используя методы расширения в C # 3. Как только Unity поддерживает это, вы можете опустить или обновить метод расширения.

public static class UnityExtensions
{
    public static T TryResolve<T>( this UnityContainer container )
        where T : class
    {
        try
        {
            return (T)container.Resolve( typeof( T ) );
        }
        catch( Exception )
        {
            return null;
        }
    }
}
1
ответ дан 1 December 2019 в 09:33
поделиться

Похоже, в нем отсутствует эта функция. В этой статье показан пример включения метода Resolve в блок try / catch для его реализации.

public object TryResolve(Type type)
{
    object resolved;

    try
    {
        resolved = Resolve(type);
    }
    catch
    {
        resolved = null;
    }

    return resolved;
}
3
ответ дан 1 December 2019 в 09:33
поделиться

Также обратите внимание, что если вы используете Unity 2.0, вы можете использовать новый метод IsRegistered() и его общая версия .

15
ответ дан 1 December 2019 в 09:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: