小编use*_*261的帖子

什么是C#中的界面强制转换?

我确实理解如何编写一个接口在C#中工作,例如这里描述的: codeguru解释

interface IIntelligence
   {
      bool intelligent_behavior();
   }

   class Human: IIntelligence
   {
      public Human()
      {
          //.............
      }

/// Interface method definition in the class that implements it
      public bool intelligent_behavior()
      {
         Console.WriteLine("........");
         return true
      }
   }
Run Code Online (Sandbox Code Playgroud)

然而,我对以下接口转换过程感到困惑:

Human human = new Human();
// The human object is casted to the interface type
IIntelligence humanIQ = (IIntelligence)human;
humanIQ.intelligent_behavior();
Run Code Online (Sandbox Code Playgroud)

有一个类(在这种情况下是Human)实现一个接口,然后将它的实例人体反馈到接口的意义是什么?问题不在于它是如何运作的,而是为什么要这样做.

c# casting interface

6
推荐指数
1
解决办法
5134
查看次数

无法在Oracle-DB中创建到远程数据库的数据库链接

我们公司有一个CRM系统,它使用Oracle 11g数据库.它由第三方供应商开发.

我们无权访问运行CRM系统的服务器.但是,我们有可用的DBA登录数据(SYS用户).它包括:

  • 服务器IP:172.1.2.3
  • 港口:1521
  • SID:abc
  • user:sys
  • 密码:*

我们可以使用它来使用Oracle SQL Developer 3.1(连接>>属性)访问数据库

现在,部分数据必须从CRM数据库复制另一个 Oracle数据库中,该数据库驻留在另一台服务器上.

据我了解,我需要在目标数据库中创建一个数据库链接.我试过这样的事情:

CREATE PUBLIC DATABASE LINK xxx CONNECT TO sys IDENTIFIED BY ***** USING 'MYTNSENTRY'
Run Code Online (Sandbox Code Playgroud)

我的tnsnames.ora如下:

MYTNSENTRY =
 (DESCRIPTION = 
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.1.2.3)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = abc)
 )
)
Run Code Online (Sandbox Code Playgroud)

....而我的listener.ora看起来像这样:

MYLISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=172.1.2.3)(PORT=1521))
      ))
SID_LIST_MYLISTENER=
  (SID_LIST=    
    (SID_DESC=
      (SID_NAME=MYTNSENTRY)
      (ORACLE_HOME=C:\somepath) # path to Oracle home …
Run Code Online (Sandbox Code Playgroud)

oracle database-connection database-link heterogeneous-services

3
推荐指数
1
解决办法
3万
查看次数