2013-08-07 108 views
0

我有一个助手类,我用它来在我的程序中的图层之间传递。这个类的特点之一是,如果底层出现错误,它会返回。它还通过层传回与例程相关的数据(即返回数据库表,字符串,整数等)。目前我通过对象类型添加数据。被调用程序需要知道返回的数据类型。 我的问题是,有没有办法返回对象,以及它是什么类型的数据?以及我将如何存储类型描述符?有没有办法知道返回的对象是什么?

目前这是怎么实现的是:

这是(也没有一个错误的数据库例程)较低级别的例子:

 return new MyHelper() 
      .AndAddObjectToReturn(rep) 
      .AndHasNoErrors(); 

这个气泡达这确实被调用的代码如下:

 ..... 
     if (contactidHelped.HaveNoErrors()) 
     { 
      repContact contact = (repContact) contactidHelped.GetAttachedDataObject(); 
      .... 
     } 

我想做的事是被调用例程,是因为它是无知,如果数据类型,做这样的代码:

 ..... 
     if (contactidHelped.HaveNoErrors()) 
     { 
      repContact contact = contactidHelped.GetAttachedDataObject(); 
      .... 
     } 

,这样的预期目标是它所需要的。

+0

这个怎么样? '无功接触= contactidHelped.GetAttachedDataObject();' –

+0

喜..这将与字符串和整数的工作,但我主要是在课堂上映射回类型属性。例如:newgroup.ProductTypeOfGroupItemLink = ....并且定义为:public repProductTypes ProductTypeOfGroupItemLink {get;组; } ..等。 – Tony

回答

0

据我所知,你是不是能够做一个简单的方法。我能想到的实现类似行为的方式是在助手类中使用类型约束。

创建具有虚拟GetAttachedDataObject返回对象类型的基Helper类(比方说MyHelper),而导出了另一类 - MyHelper<T>,它有一个方法类型T.

GetAttachedData<T>返回值当初始化/实例化帮手,实例化强类型MyHelper<T>。在来电者,你可以投你MyHelper到你想要的MyHelper<T>前期和呼叫GetAttachedData代替GetAttachedDataObject。当然,您可以进一步调整以满足您的需求。

但这并不理想要么 - 它仍然需要你做一些点铸造,但我相信它可以减少铸件的需求。

0

您可以通过简单地把它作为一个对象通过周围的GetAttachedDataObject(),例如

var attachedDataObject = contactidHelped.GetAttachedDataObject(); 

然后,当你需要访问一个特定的属性或方法对于任何给定的对象只是检查喜欢的类型:

if (attachedDataObject is repContact) { 
    // your code here 
} 

但是,我建议你检查Interfaces是如何工作的,也许它会更适合你的需求。

相关问题