1

それが可能かどうかはわかりませんが、必要なものは次のとおりです。int、Int32、Int64などの封印された型に基づいて独自のデータ型を作成することはできないので、私は何かをいじくり回していて、それが可能かどうか知りたいです。

いくつかの一般的なものを使用して、特定のタイプで定義されたトップレベルのクラスを作成したいと思います。次に、これを2つのサブクラスに派生させますが、この場合、各クラスはintまたはInt64型のいずれかに基づいています。そのインスタンスから、いずれかのインスタンスを作成し、パラメーター参照/戻り設定のypedベースを把握します。

したがって、「ThisClass」のインスタンスを作成する必要がある場合、intまたはInt64の型ベースを知る必要はありませんが、ITは型を認識し、型付きでメソッド/関数を呼び出すことができます。 ...このように、ThisClass定義をSubLevel1からSubLevel2に変更したい場合は、すべての異なるデータ型定義を踊る必要はありません。

これが理にかなっていることを願っています。

public class TopLevel<T>
{
    ... 
}

public class SubLevel1 : TopLevel<int>
{
    ...
}

public class SubLevel2 : TopLevel<Int64>
{ 
    ...
}

public class ThisClass : SubLevel1
{
    ...
    public <based on the Int data type from SubLevel1> SomeFunc()
    {  
        return <the Int value computed>;
    }
}
4

3 に答える 3

2

SomeFuncはのすべてのサブクラスに存在する必要があるとTopLevel<T>思いますので、そこで定義する必要があります。

public abstract class TopLevel<T>
{
    public TopLevel()
    {
    }

    public abstract T SomeFunc();
}

特定のサブクラスはジェネリック型パラメーターを認識しているため、ThisClassはSomeFuncを次のように定義します。

public class ThisClass : SubLevel1
{ ...
   public override int SomeFunc()
   {  
      return <the Int value computed>;
   }
}
于 2010-03-15T19:39:45.317 に答える
1

これは、すべての派生クラスをパラメーター化せずにコンパイル時に実行することはできません。

public class ThisClass<T> : SubLevel1<T> etc etc

実行時に検査などでリフレクションを使用して実行できますtypeof(ThisClass).BaseTypeが、基本クラストランク全体の継承とジェネリック型パラメーター階層を理解するコードを記述する必要があるため、かなり面倒になる可能性があります。

于 2010-03-15T19:34:54.293 に答える
0

求められたとおりにこれを行うことはできません。

ただし、using MyType = System.Int32;ファイルの先頭に書き込んでから、ファイルMyType内のどこでも使用できます。これにより、タイプを簡単に変更できます。

于 2010-03-15T19:43:45.877 に答える