2017-12-31 195 views
-2

このような方法は何ですか?どのようにすることができますか?Annotation in Oneのようなパラメータやプロパティを受け入れるメソッドを作る方法正規表現

私はインターネットをたくさん検索して何も見つかりませんでした。属性メソッドやプロパティメソッドbuのような多くのものを試してみました。

私の問題は、このように動作するメソッドを作成し、入力パラメータをオプションにしたいということです。

My Questions Image これは、(パネル他人が列挙型のある場合を除き)私のコード怒鳴るです:

public static void Reset(System.Windows.Forms.Panel panel, formulaType formulaType, ShalvarType shalvarType = 0 
      , DamanType damanType = 0, YaqeType yaqeType = 0, BalataneType balataneType = 0, AstinType astinType = 0) 
     { 


      object[,] collcetion = null; 
      switch (formulaType) 
      { 
       case formulaType.Shalvar: 
        collcetion = shalvarFurmula(shalvarType); 
        break; 
       case formulaType.Daman: 
        collcetion = damanFurmula(damanType); 
        break; 
       case formulaType.Yaqe: 
        collcetion = yaqeFurmula(yaqeType); 
        break; 
       case formulaType.Balatane: 
        collcetion = balataneFurmula(balataneType); 
        break; 
       case formulaType.Astin: 
        collcetion = astinFurmula(astinType); 
        break; 

      } 

      //System.Windows.Forms.TextBox 

      for (int i = 0; i < collcetion.Length; i++) 
      { 
       if (panel.Controls[collcetion[i, 0].ToString()].GetType().ToString() == "System.Windows.Forms.TextBox") 
       { 
        panel.Controls[collcetion[i, 0].ToString()].Text = collcetion[i, 1].ToString(); 
       } 
       else 
       { 
        System.Windows.Forms.NumericUpDown num = panel.Controls[collcetion[i, 0].ToString()] as System.Windows.Forms.NumericUpDown; 
        num.Value = Convert.ToDecimal(collcetion[i, 1]); 
       } 
      } 

     } 

私はそのようなことに終了するパネル式のタイプを持っていますが、第三いずれかからにしたいです。実際、私は列挙型を絵のように与えます。

ところで、コードを送信する方法はまだ完全ではありません。

Thankx

+0

ちょうどそれあなたの属性の標準プロパティします。 –

+0

私はそれを得ていませんでした。私がより明確になるように質問を編集させてください。 – Heydar

+0

私はそれが何であるか分からなかったと言っていました。だから、私はあなたのために何かをwrithしたいですか? まずは、あなたのような専門家がそのタイプを理解して控えめにしてから、全質問を表示しなければなりません。私はコードを書くべきだと私は認めます。 – Heydar

答えて

1

何あなたのイメージがAttribute年代オプションのプロパティで、彼らは次のように定義されているを指し:あなたが欲しい

public class MyAttribute : Attribute 
{ 
    public string SomeData { get; set; } 
} 

はオプションパラメータを使用することです。あなたはこのようにこれを実現:

public void DoSomething(string data = "", int age = 0) // data will be empty if no value is given 
{ 
} 

そして、あなたは、両方でこのメソッドを呼び出すことができます。

DoSomething(); 
DoSomething("some data"); 
DoSomething(age: 10); 
+0

私はオプションのパラメータを知っています。オプションのパラメータの悪い点は、それが順番に与える必要があるということです。たとえば、自分のコードを参照してください。私はちょうどそのメソッドにAstinTypeを渡したいのですが、AstinTypeは最後です。私は他の4つのパラメータnullまたはゼロを与える必要があります...または最後にAstinTypeを与えるが、私はQeueではない2番目の入力の後にこれを直接与えたいが、あなたが使用する方法はあなたの順序の懸念ではない入力と... – Heydar

+0

@Heydarそれは本当ではない、私の更新を見てください。 'parameterName:value'を使用して順序を指定します –

関連する問題