当前位置:编程学习 > C#/ASP.NET >>

控制台程序不能使用"绑定转换器"是吗?

网上说"TypeConverter 这个类是在绑定的时候做转换器用的。你建的控制台无法添加相应的dll。"

为什么控制台不能用TypeConverter作为一个类的Attribute呢? 这是.netframework的规定吗?
必须建一个wpf 应用程序,或者Silverlight应用程序才能使用typeconverter?
谢。 --------------------编程问答-------------------- 自己顶一下。 --------------------编程问答-------------------- 你应该多去子解WPF中的XAML,搞懂了那个就不会问这样的问题了 --------------------编程问答-------------------- 并不是控制台中不能用TypeConverter,所有.net平台项目中都可以用
只是不能像wpf中那样直接用
就好像控制台程序中无法使用asp.net中的控件,即使用了也不会有控件本来应该有的效果
因为这些程序的运行机制完全不一样 --------------------编程问答-------------------- 随便用,完全没问题 --------------------编程问答--------------------
引用 4 楼 KarasCanvas 的回复:
随便用,完全没问题


我在控制台里面自己实现一个TypeConverter,然后这个类作为Attribute就不能发挥作用,必须显示调用才行,如下:

    public class StringToHumanTypeConverter : TypeConverter
    {
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
        {
            return true;
        }
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            if (value is string)
            {
                Human h = new Human();
                h.Name = value as string;
                return h;
            }
            return base.ConvertFrom(context, culture, value);
        }
    }
    [TypeConverter(typeof(StringToHumanTypeConverter))]
    public class Human
    {
        public string Name { get; set; }
        public Human Child { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string v = "abc";
            var converter = new StringToHumanTypeConverter();//必须显示调用才能成功
            if(converter.CanConvertFrom(typeof(string)))
            {
                Human h = (Human)converter.ConvertFrom(v);
            }
            //Human h = (Human)v;这句话就编译不过,尽管我加了Attribute。
        }


能说说为什么吗? 如果可以随便用,为什么Human h=(Human)v编译会有问题呢? --------------------编程问答--------------------
引用 5 楼 u013101239 的回复:
能说说为什么吗? 如果可以随便用,为什么Human h=(Human)v编译会有问题呢?


因为没用到TypeConverter,这里是强制类型转换 --------------------编程问答--------------------
引用 5 楼 u013101239 的回复:
能说说为什么吗? 如果可以随便用,为什么Human h=(Human)v编译会有问题呢?


编译有问题说明语法上就有毛病,TypeConverter并不是集成到语言里的机制 --------------------编程问答--------------------
引用 6 楼 KarasCanvas 的回复:
Quote: 引用 5 楼 u013101239 的回复:


能说说为什么吗? 如果可以随便用,为什么Human h=(Human)v编译会有问题呢?


因为没用到TypeConverter,这里是强制类型转换


可是我在Human类的声明代码里面已经加上了Attribute了啊:

 [TypeConverter(typeof(StringToHumanTypeConverter))]
    public class Human
    {
        public string Name { get; set; }
        public Human Child { get; set; }
    }


这句话"[TypeConverter(typeof(StringToHumanTypeConverter))]"难道没有起作用吗? 还是我用的地方不对? --------------------编程问答--------------------
引用 8 楼 u013101239 的回复:
这句话"[TypeConverter(typeof(StringToHumanTypeConverter))]"难道没有起作用吗? 还是我用的地方不对?


TypeConverter并不是集成到语言里的机制 ,想实现自定义的显示或隐式转换看这里.
http://msdn.microsoft.com/en-us/library/85w54y0a.aspx --------------------编程问答--------------------
引用 9 楼 KarasCanvas 的回复:
Quote: 引用 8 楼 u013101239 的回复:

这句话"[TypeConverter(typeof(StringToHumanTypeConverter))]"难道没有起作用吗? 还是我用的地方不对?


TypeConverter并不是集成到语言里的机制 ,想实现自定义的显示或隐式转换看这里.
http://msdn.microsoft.com/en-us/library/85w54y0a.aspx


谢谢,我看了。
问题是,如何才能把TypeConverter用到Attribute里面并且让它起作用呢? 还是根本就不能这么做?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,