Для @angular версии 2.00 мне удалось найти список детей через свойство routeConfig.
Вот пример моего компонента. Обратите внимание, что я получаю доступ к дочерним элементам через свойство «parent», поскольку компонент на самом деле является одним из дочерних элементов, так как я передаю его в дочерний маршрутизатор-выход.
import { Component } from '@angular/core';
import {Route, ActivatedRoute, Router} from "@angular/router";
@Component({
selector: 'list',
template: require('./list.component.html')
})
export class ListComponent {
children = new Array<RouteLink>();
constructor(private router: Router, private activatedRoute: ActivatedRoute) {
for (let child of activatedRoute.parent.routeConfig.children) {
if (child.path && child.data["breadcrumb"]) {
this.children.push(new RouteLink(child.path, child.data["breadcrumb"]));
}
}
}
}
export class RouteLink {
constructor(private path: string, private name: string) { }
}
Вот то, как Вы делаете это:
ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] {typeof(string), typeof(int)}, null);
var c = (OracleException)ci.Invoke(new object[] { "some message", 123 });
Благодаря всему, что помогло, Вы были upvoted
Используйте отражение для инстанцирования OracleException. Посмотрите это сообщение в блоге
Использовать отражение для инстанцирования объекта OracleException? Замена
new OracleException()
с
object[] args = ... ;
(OracleException)Activator.CreateInstance(typeof(OracleException), args)
Можно ли записать тривиальную хранимую процедуру что сбои/ошибки каждый раз, затем использовать это для тестирования?
Хорошее решение, Джордж. Это также работает и для SqlException:
ConstructorInfo ci = typeof( SqlErrorCollection ).GetConstructor( BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { }, null );
SqlErrorCollection errorCollection = (SqlErrorCollection) ci.Invoke(new object[]{});
ci = typeof( SqlException ).GetConstructor( BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof( string ), typeof( SqlErrorCollection ) }, null );
return (SqlException) ci.Invoke( new object[] { "some message", errorCollection } );
-dave
Я использую клиент поставщика данных Oracle.DataAccess.Client. У меня проблемы с построением нового экземпляра объекта OracleException, но он продолжает говорить мне, что нет общедоступных конструкторов. Я попробовал все идеи, показанные выше, и продолжаю получать исключение с нулевой ссылкой.
object[] args = { 1, "Test Message" };
ConstructorInfo ci = typeof(OracleException).GetConstructor(BindingFlags.NonPublic
| BindingFlags.Instance, null, System.Type.GetTypeArray(args), null);
var e = (OracleException)ci.Invoke(args);
При отладке тестового кода я всегда получаю NULL для ci.
Oracle изменил библиотеку, чтобы не допускать этого? Что я делаю не так и что мне нужно сделать, чтобы создать экземпляр объекта OracleException для использования с NMock?
Между прочим, я использую клиентскую библиотеку для версии 10g.
Спасибо,
Чарли