代码改变世界

Silverlight中JavaSciprt无法访问托管类抽象成员的解决方法

2009-06-15 22:31  xiaosonl  阅读(228)  评论(0)    收藏  举报

假设Silverlight中存在这样的两个类, 并且注册为可以被JS调用

    [ScriptableType]
    public abstract class People
    {
        public People()
        {

        }

        public abstract string Name { get; set; }
    }

    [ScriptableType]
    public class Men : People
    {
        public Men()
        {

        }

        public override string Name { get; set; }
    }

使用JS创建Men对象后, 是无法访问到Name属性的, 不知道是不是Silverlight的一个BUG.

解决方法, 不直接暴露重载的抽象成员就可以了, 如下:

    [ScriptableType]
    public abstract class People
    {
        public People()
        {

        }

        protected abstract string _name { get; set; }
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }

    [ScriptableType]
    public class Men : People
    {
        public Men()
        {

        }

        protected override string _name { get; set; }
    }