2017-07-27 20 views
0

多くのコンソールアプリケーションプロジェクトを含むVisual Studioソリューションがあります。これらのコンソールアプリケーションのそれぞれは、Main関数を終了するときに、カスタム出口コード列挙から値を返すと予想されます。コンソールアプリケーションでMainメソッドのシグネチャをカスタマイズすることはできますか?

今のところ、Mainファンクションシグネチャは、ただint Mainです。したがって、enumの値を返すときは、enumの値をintにする必要があります。 Mainには、CustomEnum Mainの署名が必要であると指定することができないため、静的解析を強制的にやめてしまいます。

カスタムのMainシグニチャを何とか指定して、コンパイルタイムコード分析を活用できるのですか?

+1

Rayn、ちょうど 'customEnum'に戻り値をキャスト!!!! –

+1

@combo_ciが言ったこと。私はここであなたがなぜそれを使用する前に値をキャストすることができないのだろうと思って私の頭を傷つけている... – JuanR

+0

することができます。それが私の行いなのです。私は、 'Main'の戻り値の型にコンパイル時の制限を課すことを望んでいました。開発者が適切な列挙型を返すのを覚えておくのを助けることができます。 – Ryan

答えて

3

いいえ。戻り値の型はvoidまたはintである必要があります。あなたはしかし、int型に列挙型のキャストを返すことができます

public enum Spork 
{ 
    A, 
    B 
} 

class Program 
{ 
    static int Main(string[] args) 
    { 
     return (int)Spork.A; 
    } 
} 

何もかかわらず、エントリポイントのためのアダプタを作ってからあなたを停止しない:

public enum Spork 
{ 
    A, 
    B 
} 

class Program 
{ 
    static int Main(string[] args) 
    { 
     return (int)Spoooon(args); 
    } 

    /* 
    * Our 'actual' entry point for static analysis purposes 
    */ 
    static Spork Spoooon(string[] args) 
    { 
     return Spork.A; 
    } 
} 
+0

私は彼が、Enumerationのタイプを持つ各コンソールアプリの**外部**値を消費する必要があることを意味すると思います。なぜ彼はそれをキャストしないのだろうか? – JuanR

+2

彼はできることだが、その静的解析ツールは適切に機能しないと言う。私はあなたの最初の文に同意せず、あなたがその考えをどこに持っているのだろうかと思います。いずれにせよ、私ではなく*彼*に尋ねる。 – Amy

+0

私はそれをキャストでき、現在キャストしています。私は、 'Main'からの戻り型にコンパイル時の制限を課す方法があるのか​​どうか疑問に思っていたので、この解決策に取り組んでいる開発者は、' Main'からの戻り値として適切な列挙型を使うことを忘れないようにしました。 – Ryan

関連する問題