2012-02-16 4 views
-1

コマンドラインで渡された文字列オブジェクトを実際のオブジェクトにキャストすることは可能ですか?コマンドライン引数に渡された文字列オブジェクトを実際のオブジェクトにキャストできますか?

私は以下のことをしたいが、投げつけのエラーは投げられない。

Button objPro = (Button) sender; 
cProduct cp = (cProduct) objPro.CommandArgument; 

いいえ、その場合はどうしますか?

これは文字列の内容です。

cProduct cpObj = (cProduct)e.Row.DataItem; 
Button btnAddProduct = (Button)e.Row.FindControl("btnAddProduct"); 
if (btnAddProduct != null) 
{ 
    btnAddProduct.CommandArgument = cpObj.ToString(); 
} 

答えて

1

文字列なので、おそらくできません。それはではなくcProductです(.NETの命名規則に従ってください)。Productの代わりになります。

cProductの明示的な変換演算子を使用して文字列からインスタンスを作成した場合、これを行うことができます。

は、あなたは本当に文字列にだ、またはタイプで何がどのように説明していない - しかし、あなたのcProductタイプは可逆形式ですべてのデータが含まれているToString方法を提供する場合、あなたは簡単にメソッドまたはコンストラクタを書くことができますもう一度製品を作成するには:多分

Product product = new Product(objPro.CommandArgument); 

かを:

Product product = Product.Parse(objPro.CommandArgument); 

もちろん、そのコンストラクタ/メソッドを記述する必要があります。

は、私は強くちょうど明確にあなたのコードを維持するために、オペレータの代わりに、コンストラクタやメソッドを使用することをお勧めします - それはあなた自身の変換演算子を書くことはめったに非常にをお勧めします。

+0

これは文字列が保持する文字列です。 cProduct cpObj =(cProduct)e.Row.DataItem; ボタンbtnAddProduct =(ボタン)e.Row.FindControl( "btnAddProduct"); if(btnAddProduct!= null) { btnAddProduct.CommandArgument = cpObj.ToString(); } – NoviceToDotNet

+0

@NoviceToDotNet: 'cProduct.ToString()'は何を返しますか?文字列と 'cProduct'型のオブジェクトの違いを根本的に理解していますか? –

+0

私はcProduct.tosting()を作成するかどうかを確認しますが、パラメータを受け取りますが、私が間違っていれば根本的に少し詳しく説明してください。 – NoviceToDotNet

0

CommandArgument on MSDNをご覧ください。プロパティは文字列です。値をプロパティに代入すると、複雑な型を文字列にキャストしていないので、プロパティに文字列値を設定しています。 CommandArgumentであるかどうかにかかわらず、文字列をオブジェクト型にキャストできますか?疑わしい。引数がintの場合は、解析メソッドを持つ他の型の場合はint.Parseなどと試すことができます。

関連する問題