2017-04-08 63 views
0

我知道这已经在栈上回答了很多地方,最好的答案是Here。我已经尝试过了,还有很多其他的答案。我有我返回接口(IMasterAutoSuggestOutlet将ICollection <Interface>转换为ICollection <Class> [UWP] c#6.0

public interface IMasterAutoSuggestOutlet : IBaseAutoSuggestOutlet 
{ 
    IAddressData AddressData { get; } 

    IPlaceActivity PlaceActivity { get; } 

    string ELoc { get; } 

    Geopoint ExactLocation { get; } 

    Geopoint EntranceLocation { get; } 

    LocationType TypeOfLocation { get; } 
} 

集合现在图书馆,我想从一个网页在我的应用程序调用这个接口数据到另一个。由于接口不能被序列化,我创建了一个实现了这个接口的具体类:

我的具体类,

public class MasterAutoSuggestModel : IMasterAutoSuggestOutlet 
{ 
    public IAddressData AddressData { get; set; } 

    public IPlaceActivity PlaceActivity { get; set; } 

    public string ELoc { get; set; } 

    public Geopoint ExactLocation { get; set; } 

    public Geopoint EntranceLocation { get; set; } 

    public LocationType TypeOfLocation { get; set; } 
} 

我想要做的是,将ICollection的转换为ICollection的。我下面的代码显示了我实现这样的操作:

var collection = mainPageViewModel?.SearchPageVM?.searchManager?.AutoSuggestResponse; 
var ob = collection.First(); 
if (ob is IMasterAutoSuggestOutlet) 
{ 
    var ToBeTransfered = collection.OfType<MasterAutoSuggestModel>(); //Simply returns the collection with a count 0 
    var serializedData = JsonConvert.SerializeObject(ToBeTransfered); 
    ScenarioFrame.Navigate(typeof(MasterSearchResultPage), serializedData); 
} 

的问题是与var ToBeTransfered = col.OfType<MasterAutoSuggestModel>();它返回我数0即使collection中有10个项目的集合。

有人可以告诉我我哪里错了吗?请注意我需要使用此转换后的集合进行序列化并作为导航参数发送以发送到下一页

回答

0

ofType方法按指定的类型过滤连接。如果您从其他库中检索对象,则它们不会是特定的类型。 https://msdn.microsoft.com/en-us/library/bb360913(v=vs.110).aspx

你可能想要做的是将从库中检索到的项目转换为你的dto序列化。你可以使用类似automapper的东西进行转换

if (ob is IMasterAutoSuggestOutlet) { 
    var transferObject = new MasterAutoSuggestModel(){ 
     //Set Properties 
    } 
    // var ToBeTransfered = collection.OfType<MasterAutoSuggestModel>(); //Simply returns the collection with a count 0 
    var serializedData = JsonConvert.SerializeObject(transferObject); 
    ScenarioFrame.Navigate(typeof(MasterSearchResultPage), serializedData); } 
+0

我不确定手动设置属性是否正确,因为在这种情况下,属性很少,但是当只有多于6个属性时会发生什么? –

+0

这就是像AutoMapper这样的东西进来 –

+0

有没有什么办法可以安装automapper块或导入库和做一个地图。有我能做的明确演员吗?或者写一个相同的扩展方法? –