2009-03-28 4 views
1

与えられたドメインロジックをサポートする共通のプロパティとメソッドのセットを持つオブジェクトのグループがある場合、これらのオブジェクトに特定の静的メソッドが存在するように強制する方法はありますか?Cで静的メソッドの存在を要求する

私はインターフェイスを実装してもこれを達成できないと考えています(メソッドはインスタンスのみです)。静的メソッドにはオーバーライド、バーチャル、または抽象的なマークを付けることはできません。

ありがとうございます。

答えて

4

(注:F#ではあなたは、T「は整数を返す静的メソッドオーバーライド:(T)を有するタイプT FORALL「インライン」機能と「^」タイプ(例えば、を使用してそのような制約を表現することができコンパイラは各呼び出しサイトを特定の型に自動的に自動的に展開します)。

+0

ありがとうございました。確信している。 –

3

型に静的なメンバを強制的に持たせる唯一の方法は、それを継承することです。すべてのタイプが静的なメンバを持つことになりますし、あなたが派生型でそれらをオーバーライドする必要がある場合は、「新しい」キーワードを使用することができます。

static void Main(string[] args) 
{ 
    Console.WriteLine(Base.Hello()); 
    Console.WriteLine(Derived.Hello()); 
    Console.Read(); 
    /* output will be: 
    Hello 
    World 
    */ 
} 

public class Base 
{ 
    public static object Hello() 
    { 
     return "Hello"; 
    } 
} 

public class Derived : Base 
{ 
    public static new object Hello() 
    { 
     return "World"; 
    } 
} 

それは抽象/オーバーライドと全く同じではないのですが、消費者の立場から同様に動作します。

関連する問題