Есть форма. На ней есть компонент (не контрол!). Возможно ли получить его имя в runtime? В design mode, как я понимаю, оно доступно через MyComponent.Site.Name, но в runtime там пустота, однако
Здравствуйте, M_A_K, Вы писали:
M_A>Есть форма. На ней есть компонент (не контрол!). Возможно ли получить его имя в runtime? В design mode, как я понимаю, оно доступно через MyComponent.Site.Name, но в runtime там пустота, однако
private string GetComponentName(object container, object component) {
if(container == null) {
throw new ArgumentNullException("container");
} else if(component == null) {
throw new ArgumentNullException("component");
}//if
foreach(FieldInfo fieldInfo in container.GetType().GetFields(BindingFlags.Instance | BindingFlags.GetField | BindingFlags.Public | BindingFlags.NonPublic)) {
if(fieldInfo.GetValue(container) == component) {
return fieldInfo.Name;
}//if
}//for
return String.Empty;
}
Если точно известно что component обявлен именно в классе container'а, то можно добавить BindingFlags.DeclaredOnly.
under « — Faith Healer [barracuda mix]»,
... << RSDN@Home 1.1.4 beta 7 rev. 455>>