日期:2014-05-17  浏览次数:20799 次

我自己写了一个TypeConverter,编译失败了
我自己写了一个小测试程序,试图把一个string类型转换成我想要的类型。如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
namespace ConsoleApplication3
{
    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";
            Human h = (Human)v;
        }
    }
}

VC#编译错误,提示在Human h=(Human)v;这一行,error CS0030: Cannot convert type 'string' to 'ConsoleApplication3.Human'

这到底是怎么回事呢? 我在public class Human前面已经加上了TypeConverter这个Attribute了呀。
请帮忙看看