首页 新闻 会员 周边

Silverlight 中 调用WCF数据契约中要传一个object 类型的属性.为什么用不了这个ServiceKnownType/KnownType

0
悬赏园豆:50 [待解决问题]

Silverlight 中 调用WCF数据契约中要传一个object 类型的属性.为什么用不了这个ServiceKnownType/KnownType

  

[ServiceContract]    
 [ServiceKnownType("GetKnownTypes", typeof(Helper))]    
 public interface IMsgService    
 {        
   [OperationContract]        
   void SendMsg(Message message);  
      
   [OperationContract]        
   Message GetMsg();    
 }
  [DataContract]
    //[KnownType("GetKnownTypes")] public class Message
    {
        [DataMember]
        public string Content { get; set; }
        [DataMember]
        public object obj { get; set; }
       //static Type[] GetKnownTypes()
       //{
       //    return new[] { typeof(string) };
       //}     }
     static class Helper
    {
        public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
        {
            return new[] { typeof(string),..等(这里用时会动态取出要用的类型) };
        }
    }

 


 调用方法(GetMsg/SendMsg)时报错:

System.MethodAccessException: 方法“System.ServiceModel.Description.TypeLoader.GetKnownTypes(System.Object[], System.Reflection.ICustomAttributeProvider)”访问方法“WCFSLClient.ServiceReference1.Helper.GetKnownTypes(System.Reflection.ICustomAttributeProvider)”的尝试失败。


Silverlight的WCF代理是手写代码不是自动生成的. 在相关服务契约上加了ServiceKnownType特性

问题补充:

为什么没人理呀..实际问题说明

★火星人★的主页 ★火星人★ | 初学一级 | 园豆:165
提问于:2012-04-10 09:28
< >
分享
所有回答(1)
0
找到原因了,Helper声明没加public关键字,只要添加public关键字就正常了。
 
..但不知为什么用WPF/.....其它的调用不用加...我加上private都没问题...SL还有些地方不太一样呀....
★火星人★ | 园豆:165 (初学一级) | 2012-04-11 09:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册