2017-07-17 39 views
-6

我有两个派生类。在相同结构但不同类型的对象之间传输数据

public Class A : BaseClass 
{ 
    public static somecomplextype Criteria { get; set; } 
} 

public Class B : BaseClass 
{ 
    public static somecomplextype Criteria { get; set; } 
} 

我只能访问派生类而不是基类。

现在我有另一个类

public Class SomeClass 
{ 
    public SomeClass() 
    { 
     //I need a logic for the below to happen... 
     B.Criteria = (B) A.Criteria //throws invalid cast exception 
    } 
} 

问题是A.Criteria之间传送数据到B.Criteria ...

由于投抛出异常..

我想知道是否有另一种方式。

+0

不,你不能把'A'的一个子类型投射到'B'的另一个子类型。你可以创建一个构造函数来从子类型'B'的对象中产生一个子类型为'A'的对象,反之亦然,但是我可以发现这种设计的用例很少。确保你知道你在做什么,并问自己(或软件工程/编程SE)**为什么你决定这么做,是否有更好的架构解决方案? –

+0

什么演员?如何解决数据传输问题? – itsme86

+0

如果您希望将它们的实例对待相同,请不要创建两个相同的类型。只需要一种类型即可。 – Servy

回答

0

我指定的问题相当简单。我只是想将数据从一个派生类型对象转移到另一个派生类型相同的对象,因为我没有访问基类的权限。

由于对象很大,我需要为它们之间的数据传输编写一个长的数据传输逻辑。

所以我正在寻找一个简单的解决方案就像一个演员(这不会在我的情况下工作)。

我发现了一个迂回的方式来在它们之间传输数据。在此处粘贴代码FWIW

如果A.CriteriaB.Criteria是对象,我希望将A的数据传递给B.完成上述所有建议后。我想出了一条路。

string json = JsonConvert.SerializeObject(A.Criteria); 
return JsonConvert.DeserializeObject(json, typeof(B.Criteria)) as B.Criteria; 
相关问题