0

空のインターフェイス クラス IBaseInterface があるとします。これは、実装クラスをインターフェイス自体として「ラベル付け」するためだけに使用されます。

このようなことをする方法はありますか?

例えば:

public class MyClass : T where T : IBaseInterface
{
}
4

3 に答える 3

2

そうじゃない、ない。構成パターンを使用して、試みていることを何でも達成することを強くお勧めします。別の方法として、 DynamicProxy (または他のプロキシ ソリューション) が目的であることに気付くかもしれません。

于 2011-07-09T20:39:09.963 に答える
2

いいえ、それはできません。コンパイラは、クラスを宣言するときにクラスが実装するインターフェイスを認識している必要があるためです。インターフェイスに汎用パラメーター 指定できますが、実際のインターフェイスを指定する必要があります。

于 2011-07-09T20:39:54.733 に答える
0

あなたが宣言している型は一般的ではありません。このようなもの:

class MyClass<T> : T where T : IBaseInterface

一部の状況 (たとえば、.Net ジェネリックの代わりに C++ テンプレートが使用された場合) では機能する可能性がありますが、それは単に有効な C# コードではありません。

「ラベル」が何に使用されるのかわかりませんが、プロパティを持つインターフェイス

ClassType ClassType { get; }

どこで ClassType働くenumことができますか。

于 2011-07-09T20:45:39.327 に答える