2016-11-15 12 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

Хорошо, вот как я сейчас.

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); } 
}