cannot explicitly call operator or accessor_
-
Sunday, April 08, 2012 5:38 AM
Hi Guys,
I am trying to create a connector for SCOM using c#. But I am getting the following error. Can any one help me in solving this.
Thanks in advance
using Microsoft.EnterpriseManagement; using Microsoft.EnterpriseManagement.Common; using Microsoft.EnterpriseManagement.Configuration; using Microsoft.EnterpriseManagement.ConnectorFramework; using Microsoft.VisualBasic; using Microsoft.VisualBasic.CompilerServices; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Threading; namespace ConsoleApplication1 { [StandardModule] internal sealed class ConnectorModule { private static string[,] XlateDictionary = new string[3, 2]; private static string[,] EscDictionary = new string[5, 2]; private static int XlateSize; private static int EscSize; [System.STAThread] public static void main(string[] args) { checked { ManagementGroup managementGroup = new ManagementGroup("localhost"); ConnectorFrameworkAdministration connectorFrameworkAdministration = managementGroup.GetConnectorFrameworkAdministration(); System.Guid guid = new System.Guid("{6A1F8C0E-B8F1-4147-8C9B-5A2F98F10003}"); int num = 0; try { MonitoringConnector monitoringConnector; if (args.Length == 1) { if (Operators.CompareString(args[0], "InstallConnector", false) == 0) { monitoringConnector = connectorFrameworkAdministration.Setup(new ConnectorInfo { Description = "Test Enterprise Monitoring Connector", DisplayName = "Enterprise Monitoring Connector", Name = "Enterprise Monitoring Connector" }, guid); monitoringConnector.Initialize(); } if (Operators.CompareString(args[0], "UninstallConnector", false) == 0) { monitoringConnector = connectorFrameworkAdministration.GetMonitoringConnector(guid); System.Collections.ObjectModel.ReadOnlyCollection<MonitoringConnectorSubscription> connectorSubscriptions = connectorFrameworkAdministration.GetConnectorSubscriptions(); try { System.Collections.Generic.IEnumerator<MonitoringConnectorSubscription> enumerator = connectorSubscriptions.GetEnumerator(); while (enumerator.MoveNext()) { MonitoringConnectorSubscription current = enumerator.Current; if (current.get_MonitoringConnectorId() == guid) { connectorFrameworkAdministration.DeleteConnectorSubscription(current); } } } finally { System.Collections.Generic.IEnumerator<MonitoringConnectorSubscription> enumerator; if (enumerator != null) { enumerator.Dispose(); } } monitoringConnector.Uninitialize(); connectorFrameworkAdministration.Cleanup(monitoringConnector); } System.Console.WriteLine("Install Directive Complete"); } monitoringConnector = connectorFrameworkAdministration.GetMonitoringConnector(guid); if (!EventLog.SourceExists("Alerting Connector")) { EventLog.CreateEventSource("Alerting Connector", "Alerting Connector"); } EventLog eventLog = new EventLog("Alerting Connector", ".", "Alerting Connector"); System.Console.WriteLine("Setting up..."); eventLog.WriteEntry("Starting the Connector", EventLogEntryType.Information, 100); ConnectorModule.DictionaryUpdate(); System.DateTime lastWriteTime = System.IO.File.GetLastWriteTime("D:\\myconnector\\XlateDict.txt"); System.Console.WriteLine("Dictionary Loaded"); eventLog.WriteEntry("Dictionary Loaded: Translate", EventLogEntryType.Information, 200); ConnectorModule.SpecialEscalationDictionaryUpdate(); System.DateTime lastWriteTime2 = System.IO.File.GetLastWriteTime("D:\\myconnector\\EscDict.txt"); System.Console.WriteLine("Escalation Dictionary Loaded"); eventLog.WriteEntry("Dictionary Loaded: Escalation", EventLogEntryType.Information, 200); System.Console.WriteLine("---------------------------------------------"); while (true) { System.Collections.ObjectModel.ReadOnlyCollection<ConnectorMonitoringAlert> readOnlyCollection = monitoringConnector.GetMonitoringAlerts(); System.Console.WriteLine("...Handling " + Conversions.ToString(readOnlyCollection.Count) + " alerts"); if (readOnlyCollection.Count > 0) { System.Console.WriteLine("Processing Queued Alerts..."); try { System.Collections.Generic.IEnumerator<ConnectorMonitoringAlert> enumerator2 = readOnlyCollection.GetEnumerator(); while (enumerator2.MoveNext()) { ConnectorMonitoringAlert current2 = enumerator2.Current; string text = "NoID"; string text2 = "No Comment"; string text3 = "0"; string text4 = "1"; string text5 = "Error"; string text6 = "No Instance"; string text7 = "No Object Class"; string text8 = "NoComputerName"; string text9 = "NoFullPath"; string description = "No Alert Details"; string text10 = Conversions.ToString(0); try { text = current2.get_Id().ToString(); text2 = current2.get_Name().ToString(); text3 = Conversions.ToString(current2.get_ResolutionState()); text4 = current2.get_Severity().ToString(); text5 = current2.get_Priority().ToString(); text6 = current2.get_MonitoringObjectDisplayName(); MonitoringClass monitoringClass = managementGroup.GetMonitoringClass(current2.get_MonitoringClassId()); text7 = monitoringClass.get_DisplayName().ToString(); text8 = current2.get_NetbiosComputerName().ToString(); text9 = current2.get_MonitoringObjectFullName().ToString(); description = current2.get_Description().ToString(); text10 = Conversions.ToString(current2.get_RepeatCount()); } catch (System.Exception expr_311) { ProjectData.SetProjectError(expr_311); eventLog.WriteEntry(text + " Caused Null Pointer Exception", EventLogEntryType.Error, 506); ProjectData.ClearProjectError(); } if (Operators.CompareString(text8, "NoComputerName", false) == 0) { text8 = text9; } System.Console.WriteLine("Alert ID: " + text); System.Console.WriteLine("Computer Name: " + text8); System.Console.WriteLine("Alert Name: " + text2); System.Console.WriteLine("Resolution State: " + text3); System.Console.WriteLine("Severity: " + text4); System.Console.WriteLine("Priority: " + text5); System.Console.WriteLine("ObjectDispName: " + text6); System.Console.WriteLine("ClassName: " + text7); string text11 = ConnectorModule.DictionaryLookup(text7); if (Operators.CompareString(Strings.Trim(Strings.UCase(text11)), Strings.Trim(Strings.UCase(text7)), false) != 0) { current2.Update("Connector updated the class name to " + text11); } string text12 = ConnectorModule.EscalationLookup(text8, text11, text6); if (Operators.CompareString(Strings.UCase(text12), Strings.UCase(text11), false) != 0) { current2.Update("Connector found a special class name. Updating to " + text12); } System.Console.WriteLine("Object Class: " + text12); System.Console.WriteLine("Class Instance: " + text6); System.Console.WriteLine("Repeat Count: " + text10); if (Operators.CompareString(text12, "Health Service Watcher", false) == 0) { text8 = text6; text6 = "System"; } ConnectorModule.TrapSend(text, text3, text4, text5, text8, text2, description, text12, text6, text10); current2.Update("Alert has been forwarded to the enterprise management connector for processing."); } } finally { System.Collections.Generic.IEnumerator<ConnectorMonitoringAlert> enumerator2; if (enumerator2 != null) { enumerator2.Dispose(); } } monitoringConnector.AcknowledgeMonitoringAlerts(readOnlyCollection); } readOnlyCollection = null; System.Threading.Thread.Sleep(15000); if (System.DateTime.Compare(lastWriteTime, System.IO.File.GetLastWriteTime("D:\\myconnector\\XlateDict.txt")) != 0) { System.Console.WriteLine("!Translation Dictionary cache is out of date!"); eventLog.WriteEntry("Translate Dictionary is out of date! Reloading.", EventLogEntryType.Information, 205); ConnectorModule.DictionaryUpdate(); lastWriteTime = System.IO.File.GetLastWriteTime("D:\\myconnector\\XlateDict.txt"); } if (System.DateTime.Compare(lastWriteTime2, System.IO.File.GetLastWriteTime("D:\\myconnector\\EscDict.txt")) != 0) { System.Console.WriteLine("!Escalation Dictionary cache is out of date!"); eventLog.WriteEntry("Escalate Dictionary is out of date! Reloading.", EventLogEntryType.Information, 205); ConnectorModule.SpecialEscalationDictionaryUpdate(); lastWriteTime2 = System.IO.File.GetLastWriteTime("D:\\myconnector\\EscDict.txt"); } System.Threading.Thread.Sleep(15000); if (num > 20) { eventLog.WriteEntry("Periodic Heartbeat to verify connector is running", EventLogEntryType.Information, 50); num = 0; } num++; } } catch (MonitoringException expr_593) { ProjectData.SetProjectError(expr_593); MonitoringException ex = expr_593; System.Console.WriteLine(ex.Message); ProjectData.ClearProjectError(); } } } public static void DictionaryUpdate() { checked { string[] array = new string[3]; ConnectorModule.XlateDictionary = new string[3, 2]; int num = 0; System.Console.Write("Updating Dictionary."); System.IO.StreamReader streamReader = new System.IO.StreamReader("D:\\myconnector\\XlateDict.Txt"); while (!streamReader.EndOfStream) { string text = streamReader.ReadLine(); System.Console.Write("."); if (Operators.CompareString(Strings.Left(text, 1), "#", false) != 0) { array = Strings.Split(text, ",", 2, CompareMethod.Text); ConnectorModule.XlateDictionary[0, num] = array[0]; ConnectorModule.XlateDictionary[1, num] = array[1]; num++; ConnectorModule.XlateDictionary = (string[,])Utils.CopyArray((System.Array)ConnectorModule.XlateDictionary, new string[3, num + 1 + 1]); } } System.Console.WriteLine(".Done! Read " + num.ToString() + " records."); streamReader.Close(); } } public static void SpecialEscalationDictionaryUpdate() { checked { string[] array = new string[5]; ConnectorModule.EscDictionary = new string[5, 2]; int num = 0; System.Console.Write("Updating Escalation Table."); System.IO.StreamReader streamReader = new System.IO.StreamReader("D:\\myconnector\\EscDict.Txt"); while (!streamReader.EndOfStream) { string text = streamReader.ReadLine(); System.Console.Write("."); if (Operators.CompareString(Strings.Left(text, 1), "#", false) != 0) { array = Strings.Split(text, ",", 4, CompareMethod.Text); int num2 = 0; do { ConnectorModule.EscDictionary[num2, num] = array[num2]; num2++; } while (num2 <= 3); num++; ConnectorModule.EscDictionary = (string[,])Utils.CopyArray((System.Array)ConnectorModule.EscDictionary, new string[5, num + 1 + 1]); } } System.Console.WriteLine(".Done! Read " + num.ToString() + " records."); streamReader.Close(); } } public static string DictionaryLookup(string InputClassName) { checked { string result = InputClassName; int arg_0F_0 = 0; int num = Information.UBound(ConnectorModule.XlateDictionary, 2); for (int i = arg_0F_0; i <= num; i++) { if (Operators.CompareString(Strings.UCase(InputClassName), Strings.UCase(ConnectorModule.XlateDictionary[0, i]), false) == 0) { result = ConnectorModule.XlateDictionary[1, i]; } } return result; } } public static string EscalationLookup(string ComputerName, string ClassName, string ClassInstance) { checked { string result = ClassName; int arg_0F_0 = 0; int num = Information.UBound(ConnectorModule.EscDictionary, 2); for (int i = arg_0F_0; i <= num; i++) { if (Operators.CompareString(Strings.UCase(ComputerName), Strings.UCase(ConnectorModule.EscDictionary[0, i]), false) == 0 & Operators.CompareString(Strings.UCase(ClassName), Strings.UCase(ConnectorModule.EscDictionary[1, i]), false) == 0 & Operators.CompareString(Strings.UCase(ClassInstance), Strings.UCase(ConnectorModule.EscDictionary[2, i]), false) == 0) { result = ConnectorModule.EscDictionary[3, i]; } } return result; } } public static bool TrapSend(string AlertID, string ResolutionState, string Severity, string Priority, string Computername, string AlertName, string Description, string ClassID, string ClassInstance, string RepeatCount) { string text = "localhost"; string text2 = string.Concat(new string[] { "-d ", text, " -c fxstspublic -v .1.3.6.1.4.1.2349.2.2.2.2 STRING ", ResolutionState, " -v .1.3.6.1.4.1.2349.2.2.2.3 STRING \"", AlertName, "\" -v .1.3.6.1.4.1.2349.2.2.2.4 STRING \"", Computername, "\" -v .1.3.6.1.4.1.2349.2.2.2.5 STRING \"", ClassID, "\" -v .1.3.6.1.4.1.2349.2.2.2.6 STRING \"", ClassInstance, "\" -v .1.3.6.1.4.1.2349.2.2.2.7 STRING \"", Description, "\" -v .1.3.6.1.4.1.2349.2.2.2.8 STRING \"", Severity, "\" -v .1.3.6.1.4.1.2349.2.2.2.9 STRING \"", RepeatCount, "\" -v .1.3.6.1.4.1.2349.2.2.2.10 STRING \"", AlertID, "\"" }); Process process = new Process(); try { process.StartInfo.FileName = "D:\\SNMPTrap\\Trapgen.exe"; process.StartInfo.Arguments = text2; process.Start(); process.WaitForExit(); process.Dispose(); } catch (System.Exception expr_F5) { ProjectData.SetProjectError(expr_F5); System.Exception value = expr_F5; System.Console.WriteLine("EXCEPTION! Unable to start Trapgen to send the trap! "); System.Console.WriteLine("------------------------------------------------------"); System.Console.WriteLine(text2); System.Console.WriteLine(value); System.Console.WriteLine("------------------------------------------------------"); ProjectData.ClearProjectError(); } text = "localhost"; text2 = string.Concat(new string[] { "-d ", text, " -c fxstspublic -v .1.3.6.1.4.1.2349.2.2.2.2 STRING ", ResolutionState, " -v .1.3.6.1.4.1.2349.2.2.2.3 STRING \"", AlertName, "\" -v .1.3.6.1.4.1.2349.2.2.2.4 STRING \"", Computername, "\" -v .1.3.6.1.4.1.2349.2.2.2.5 STRING \"", ClassID, "\" -v .1.3.6.1.4.1.2349.2.2.2.6 STRING \"", ClassInstance, "\" -v .1.3.6.1.4.1.2349.2.2.2.7 STRING \"", Description, "\" -v .1.3.6.1.4.1.2349.2.2.2.8 STRING \"", Severity, "\" -v .1.3.6.1.4.1.2349.2.2.2.9 STRING \"", RepeatCount, "\" -v .1.3.6.1.4.1.2349.2.2.2.10 STRING \"", AlertID, "\"" }); Process process2 = new Process(); try { process2.StartInfo.FileName = "D:\\SNMPTrap\\Trapgen.exe"; process2.StartInfo.Arguments = text2; process2.Start(); process2.WaitForExit(); process2.Dispose(); } catch (System.Exception expr_224) { ProjectData.SetProjectError(expr_224); System.Exception value2 = expr_224; System.Console.WriteLine("EXCEPTION! Unable to start Trapgen to send the trap! "); System.Console.WriteLine("------------------------------------------------------"); System.Console.WriteLine(text2); System.Console.WriteLine(value2); System.Console.WriteLine("------------------------------------------------------"); ProjectData.ClearProjectError(); } return true; } } }Error 1 'Microsoft.EnterpriseManagement.ConnectorFramework.MonitoringConnectorSubscription.MonitoringConnectorId.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 56 49 ConsoleApplication1
Error 2 'Microsoft.EnterpriseManagement.Monitoring.OperationalDataObject.Id.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 118 57 ConsoleApplication1
Error 3 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.Name.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 119 58 ConsoleApplication1
Error 4 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.ResolutionState.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 120 79 ConsoleApplication1
Error 5 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.Severity.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 121 58 ConsoleApplication1
Error 6 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.Priority.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 122 58 ConsoleApplication1
Error 7 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.MonitoringObjectDisplayName.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 123 58 ConsoleApplication1
Error 8 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.MonitoringClassId.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 124 119 ConsoleApplication1
Error 9 'Microsoft.EnterpriseManagement.Configuration.ManagementPackElement.DisplayName.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 125 65 ConsoleApplication1
Error 10 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.NetbiosComputerName.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 126 58 ConsoleApplication1
Error 11 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.MonitoringObjectFullName.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 127 58 ConsoleApplication1
Error 12 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.Description.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 128 64 ConsoleApplication1
Error 13 'Microsoft.EnterpriseManagement.Monitoring.MonitoringAlert.RepeatCount.get': cannot explicitly call operator or accessor C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 129 80 ConsoleApplication1
All Replies
-
Sunday, April 08, 2012 6:20 AMModerator
You're accessing the properties via the property's get method, and not the property, for example, this:
MonitoringConnectorSubscription current = enumerator.Current; if (current.get_MonitoringConnectorId() == guid)
Should be:
MonitoringConnectorSubscription current = enumerator.Current;
if (current.MonitoringConnectorId == guid)
Other properties are done the same way throughout your code. If you click on each error in the Error window, Visual Studio should take you to the problematic line one by one, so you can correct the property accessor code.
Reed Copsey, Jr. - http://reedcopsey.com
If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful".- Proposed As Answer by RicedMicrosoft Community Contributor Sunday, April 08, 2012 5:14 PM
- Marked As Answer by Neutron1985 Wednesday, April 11, 2012 4:10 PM
-
Sunday, April 08, 2012 5:55 PM
Thanks Reed Copsey, Jr. I changed the code and I get new error as given below,
Error 1 Use of unassigned local variable 'enumerator' C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs 65 37 ConsoleApplication1
Error 2 Use of unassigned local variable 'enumerator2' C:\Documents and Settings\Administrator.INGEN\My Documents\Visual Studio 2010\Projects\\ConsoleApplication1\ConsoleApplication1\Program.cs 174 37 ConsoleApplication1
Can any one help me in solving this.
-
Sunday, April 08, 2012 6:43 PMModerator
System.Collections.Generic.IEnumerator<MonitoringConnectorSubscription> enumerator;
You never assign a value to the variable, enumerator. You should also see a warning message notifying you of that fact.
Rudy =8^D
Mark the best replies as answers. "Fooling computers since 1971."
http://thesharpercoder.blogspot.com/
- Edited by Rudedog2MVP, Moderator Sunday, April 08, 2012 6:43 PM
-
Monday, April 09, 2012 1:05 AM
There is no warning message, I can see only critical errors.
finally { System.Collections.Generic.IEnumerator<MonitoringConnectorSubscription> enumerator; if (enumerator != null) { enumerator.Dispose(); } }Where exactly I need to assign the value. Can you help me on this, Please.
Naresh
-
Monday, April 09, 2012 3:48 PM
Hi,
I would suggest to use the foreach statement : http://msdn.microsoft.com/en-us/library/aa664754(VS.71).aspx
As you'll see it handles this for you automatically. The issue you have for now is that enumerator is declared inside the try block. The one you declared inside the finally block is ANOTHER variable rather than the same. Though you would have to move the enumerator declaration outside of the try block and suppress its declaration in the finally block but as you'll see you then just get the code that is automatically generated for you when using the foreach statement.
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
- Edited by Patrice ScribeMVP Monday, April 09, 2012 3:48 PM
-
Wednesday, April 11, 2012 2:13 PM
What are those 5 lines supposed to do? The answer to that question should tell you if and where you need to instantiate it, or if you should get rid of the whole.

