コンテナは自分のメソッドを呼び出すことができるように、IPersistStorageインターフェイスのメソッドをオーバーライドする必要がありますが、コントロールからクラスを実装する必要があります。コントロールをCOMコンポーネントとして登録すると、Wrapper(Com Callable Wrapper) IPersistStorageインターフェイスとコンテナは、ラッパーのメソッドを呼び出します。C#でコントロールのメソッドをオーバーライドします。 COMコンポーネント
私のクラスでIPersistStorageメソッドをオーバーライドする方法、またControlクラス(System.Windows.Forms)を実装する方法はありますか? 問題はコントロールでもなく、インターフェイスやクラスにもこのようなメソッドがありません。
namespace MiniEye
{
[ProgId("MiniEye")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
[Guid("BBC06458-A67A-4413-81ED-F85E2FCC20CA")]
public partial class MiniEye : UserControl
{
private const string GUID = "BBC06458-A67A-4413-81ED-F85E2FCC20CA";
public MiniEye()
{
InitializeComponent();
}
}
}
上記のツールでUserControlから継承せずにIPersist、(なぜなら、ユーザーコントロールの)IPersistStorageからとlooks like
クラス上記のツールOLEVIEWに継承されるクラスはOLEVIEW looks like
このインターフェイスをControlクラスに追加することは非常に論理的ではありませんが、それは単なるインターフェイスなので、カスタマイズしたいコントロールからクラスを派生させ、[ComVisible]インターフェイスを追加します。これがコントロールをシリアライズ可能にする何らかの試みであれば、そこには行かないでください。うまく終わらないでしょう。 –
実際には動作していません。 –
ラブリー。 「働かない」ための理由はたくさんありますが、IPersistStorageはC#の扱いにくいインターフェイスです.IPersistのメソッドを間違って宣言するのは非常に簡単です。しかし、それが本当の理由であるかどうかはわかりません。 –