zoukankan      html  css  js  c++  java
  • 《ASP.NET组件设计》没提到的一个类

    就是这个, ItemBuilderConverter,
    终于搞明白这个 IComponent.Site是什么意思了。

    public class ItemBuilderConverter : TypeConverter
        
    {
            
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
            
    {
                
    if (sourceType == typeof (string))
                    
    return true;
                
    return base.CanConvertFrom(context, sourceType);
            }


            
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
            
    {
                
    if (destinationType == typeof (string))
                    
    return true;
                
    return base.CanConvertTo(context, destinationType);
            }


            
    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
            
    {
                
    if (value == null || value.ToString() == string.Empty) return string.Empty;
               
                
    object result = context.Container.Components[value.ToString()];
                
    if (result != null)
                
    {
                    
    return value.ToString();
                }

                
    return string.Empty;            
            }


            
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
            
    {
                
    if (destinationType == nullthrow new Exception("目标类型为null");
                
    if (value == nullreturn null;

                
    return base.ConvertTo(context, culture, value, destinationType);
            }

            
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
            
    {
                
    return true;
            }



            
    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
            
    {         
                IList list 
    = new ArrayList();
                
                IEnumerator itor 
    = context.Container.Components.GetEnumerator();
                
    while(itor.MoveNext())
                
    {
                    
    object item = itor.Current;
                    
    if(item is IListsBuilder)
                    
    {
                        list.Add( ((IComponent)item).Site.Name );
                    }

                }
            
                
    if (list.Count > 0)
                
    {                
                    
    return new StandardValuesCollection(list);
                }
                    
                
    return base.GetStandardValues(context);
            }



        }
  • 相关阅读:
    2018-2019-2 20165325 网络对抗技术 Exp4 恶意代码分析
    2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践
    2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践
    2018-2019-2 网络对抗技术 20165325 Exp1 PC平台逆向破解
    20165315 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1
    2018-2019-1 20165226_20165310_20165315 实验五 通讯协议设计
    2018-2019-120165226_20165310_20165315 实验四 外设驱动程序设计
    2018-2019-1 20165315 实验三 实时系统
    2018-2019-1 20165226 20165310 20165315 实验二 固件程序设计
    20165315 第八周考试课下补做
  • 原文地址:https://www.cnblogs.com/xiaotaoliang/p/389254.html
Copyright © 2011-2022 走看看