2016-11-15 5 views
0

何が最善の方法だろうと思います。c#twincatの引数をクラスコンストラクタに渡します

クラスをクラスコンストラクタに渡す必要がある場合、なぜクラス内で変数を使用する必要がありますか。

例:

using Beckhoff.App.Ads.Core.Plc; 

Class test() 
{ 
    private static IBAAdsServer AdsServer; 
    private static IBAAdsCncClient _cncClient; 

    public test(IBAAdsServer _adsServer) //constructor 
    { 
     try 
     { 
      AdsServer = _adsServer; 
      _cncClient = AdsServer.GetAdsClient<IBAAdsCncClient>("CNC"); 
      _cncClient.Synchronize = true; 
     } 
     catch (Exception Except) 
     { MessageBox.Show("Error ! " + Except.Message); } 
    } 

なぜ私が行うことはできません。

using Beckhoff.App.Ads.Core.Plc; 

Class test() 
{ 
    private static IBAAdsCncClient _cncClient; 

    public test(IBAAdsServer _adsServer) //constructor 
    { 
     try 
     { 
      _cncClient = _adsServer.GetAdsClient<IBAAdsCncClient>("CNC"); 
      _cncClient.Synchronize = true; 
     } 
     catch (Exception Except) 
     { MessageBox.Show("Error ! " + Except.Message); } 
    } 

私はきちんとそれを行うことができますどのように、接続されていないクラスの多くの_adsServerを使用したいですか?

ありがとうございました。

+0

これは可能です。コンストラクターが完了したら、その参照を失うだけです。なぜあなたはそれをすることができないと言いますか?また、なぜあなたは 'GetAdsClient <...>'をクラス外に出して結果をクラスにプッシュしないのですか? – bixarrio

+0

はい、これを行うには別の方法でしたが、実際にはこのようにしていますが、それを行うには良い方法であるのか、別のより良い方法があるのか​​不思議でした。ありがとう – Jablonovo

答えて

0

[OK]をここに私は今のようです。

using Beckhoff.App.Ads.Core.Plc; 

Class test() 
{ 
private static IBAAdsServer AdsServer; 
private static IBAAdsCncClient _cncClient; 

public test(IBAAdsServer _adsServer)     //constructor 
{ 
    try 
    { 
     AdsServer = _adsServer; 
     _cncClient = AdsServer.GetAdsClient<IBAAdsCncClient>("CNC"); 
     _cncClient.Synchronize = true; 
     Classtocall newClass = ClasstoCall(_cncClient);//Passing the argument directly 
} 
catch (Exception Except) 
    { MessageBox.Show("Error ! " + Except.Message); } 
} 
関連する問題