2011-07-09 55 views
0

インターフェイスクラスIBaseInterfaceは、実装クラスをインターフェイス自体として「ラベル付け」するためにのみ使用されます。汎用インターフェイスを実装するC#クラスを宣言する

このような方法はありますか?例えば

:そのような

public class MyClass : T where T : IBaseInterface 
{ 
} 
+2

ジェネリック型はどのように機能しますか? – BoltClock

+1

.NETでは、特定の動作のためにクラスにタグを付けるだけの場合は、空のインターフェイスの代わりに属性を使用することをお勧めします。 –

答えて

2

いいえ、コンパイラは、クラスを宣言するときにクラスが実装するインターフェイスを知っていなければなりません。 汎用パラメータをインタフェースに設定できますが、実際のインタフェースを指定する必要があります。

2

ない、ありません。私は強く、あなたがしようとしているものを達成しようとするために組成パターンを使用することをお勧めします。代わりに、あなたはDynamicProxy(または他のプロキシソリューション)があなたの目的です。

0

宣言しているタイプは一般的ではありません。このような何か:(C++テンプレートが代わりの.NETジェネリック医薬品の使用された場合、たとえば)

class MyClass<T> : T where T : IBaseInterface 

は、いくつかの状況の下で働くことができますが、それは単に、有効なC#コードではありません。

私がのために使用される「ラベル」が何であるかわからないんだけど、 ClassTypeenumは仕事ができるという特性を持つインターフェース

ClassType ClassType { get; } 

関連する問題