私はCOMインターフェイスを持っており、アクセサメソッドを追加する必要があります。返される値は、実際にはVARIANT_BOOL、long、BSTR、またはIDispatch派生インターフェイスの4種類のいずれかになります。VARIANTまたはいくつかの戻ってくる別個の型を取り戻す1つのアクセサメソッド?
したがって、私はVARIANTを返すか、別個の型を返す4つの異なるアクセスメソッドを持っています。
interface IValue1 {
HRESULT GetType(TypeEnum*);
HRESULT GetValue(VARIANT*);
};
または
interface IValue2 {
HRESULT GetType(TypeEnum*);
HRESULT GetLongValue(long*);
HRESULT GetBstrValue(BSTR*);
HRESULT GetBoolValue(VARIANT_BOOL*);
HRESULT GetInterfaceValue(ICustomInterface**);
}
私はとにかくIValueX ::メソッドGetTypeを持つことになります - 明確にするため。後者のオプションを選択すると、4つのアクセサのうちの1つだけが実際に値を返します。他のすべてのアクセサは、タイプの不一致のためエラーを示します。
このインターフェイスは、VB6、Perl、.NETなど、可能な限り幅広いクライアントから消耗する必要があります。
VARIANTまたは異なるタイプのどちらを使用する方が良いでしょうか?