IInterfaceInfo.Source プロパティ

インターフェイスがソースかどうか、つまり、クライアントが呼び出すのではなく待機しているインターフェイスかどうかを示す値を取得します。

名前空間 :  Microsoft.VisualStudio.VsWizard
アセンブリ :  Microsoft.VisualStudio.VsWizard (Microsoft.VisualStudio.VsWizard.dll 内)

構文

'宣言
ReadOnly Property Source As Boolean
'使用
Dim instance As IInterfaceInfo
Dim value As Boolean

value = instance.Source
bool Source { get; }
property bool Source {
    bool get ();
}
function get Source () : boolean

プロパティ値

型 : System.Boolean

インターフェイスがソースの場合は true、それ以外の場合は false。

解説

ソース インターフェイスは、クライアントが (C++ のコネクション ポイントなどを使用して) 呼び出しを行うインターフェイスではなく、クライアントへの通信を行うインターフェイスです。サーバーが呼び出しを行い (または、複数のクライアントを許可するインターフェイスでは呼び出しを多重化し)、クライアントはハンドラを実装します。

指定されたコクラスでは、1 つのインターフェイスだけを [source] としてマークできます。

// From the Visual C++ Member Variable wizard

function GenerateActiveXControlClassText(oTypeLib)
{
   var strClassText = "";

   var oInterfaces = oTypeLib.Interfaces;
   var nCount = oInterfaces.Count;

   var bGenerate_Array = new Array();
   var Name_Array = new Array();
   var Base_Array = new Array();
   var i;
   for (i = 0; i < nCount; i++)
   {
      var oInterface = oInterfaces.item(i+1);

      if (oInterface.CoClass != CONTROL_TYPE.text 
         || oInterface.Default == false 
         || oInterface.Source == true)
         continue;

      Name_Array[i] = oInterface.Name;
      Base_Array[i] = oInterface.Base;
      bGenerate_Array[i] = true;
   }
   for (i = 0; i < nCount; i++)
   {
      if (oInterface.CoClass != CONTROL_TYPE.text 
         || oInterface.Default == false 
         || oInterface.Source == true)
         continue;

      var strBase = Base_Array[i];
      if(strBase && strBase.length && 
         strBase!="IDispatch" && strBase!="IUnknown")
      {
         for(var j=0; j< nCount; j++)
         {
            if(strBase == Name_Array[j])
            {
               bGenerate_Array[j] = false;
               break;
            }
         }
      }
   }
   for (i = 0; i <  nCount; i++)
   {
      var oInterface = oInterfaces.item(i+1);
      if(!bGenerate_Array[i])
      {
         strClassText += "// Interface: " + Name_Array[i] + " not generated, because it was a base interface for others.\n\n";
      }
      else if (oInterface.Type == 2 
               && oInterface.CoClass == CONTROL_TYPE.text 
               && oInterface.Default 
               && !oInterface.Source)  // einterfaceDispinterface
      {
         strClassText += "// ";
         strClassText += Name_Array[i];
         strClassText += "\r\n\r\n// Functions\r\n//\r\n\r\n";
         strClassText += GetFuncText(oTypeLib, oInterface, strClassText);
      }
   }
   return strClassText;
}

アクセス許可

  • 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

参照

参照

IInterfaceInfo インターフェイス

IInterfaceInfo メンバ

Microsoft.VisualStudio.VsWizard 名前空間