zoukankan      html  css  js  c++  java
  • VB CreateObject转C#

    C#调用方法、函数获取属性大致流程如下:

                System.Type oType = System.Type.GetTypeFromProgID("SomeClass");
                object o = System.Activator.CreateInstance(oType);
                oType.InvokeMember("SomeMethod", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] { arg1, arg2 });
                w = oType.InvokeMember("SomeFunction", System.Reflection.BindingFlags.InvokeMethod, null, o, new object[] { arg1, arg2 });
                w = oType.InvokeMember("SomeGet", System.Reflection.BindingFlags.GetProperty, null, o, null);
                oType.InvokeMember("SomeSet", System.Reflection.BindingFlags.SetProperty, null, o, new object[] { w }); 

    示例:VB.NET 获取计划任务列表

    Dim service = CreateObject("Schedule.Service")
            Call service.Connect()
    
            ' Get the task folder that contains the tasks. 
            Dim rootFolder
            rootFolder = service.GetFolder("")
    
            Dim taskCollection
            taskCollection = rootFolder.GetTasks(0)
    
            Dim numberOfTasks
            numberOfTasks = taskCollection.Count
    
            If numberOfTasks = 0 Then
                Debug.Print("No tasks are registered.")
            Else
                Debug.Print("Number of tasks registered: " & numberOfTasks)
    
                Dim registeredTask
                For Each registeredTask In taskCollection
                    Debug.Print("Task Name: " & registeredTask.Name)
    
                    Dim taskState
                    Select Case registeredTask.State
                        Case "0"
                            taskState = "Unknown"
                        Case "1"
                            taskState = "Disabled"
                        Case "2"
                            taskState = "Queued"
                        Case "3"
                            taskState = "Ready"
                        Case "4"
                            taskState = "Running"
                        Case Else
                            taskState = "Unknown"
                    End Select
    
                    Debug.Print("    Task State: " & taskState)
                Next
            End If

    翻译为C#:

    var typeofScheduleService = System.Type.GetTypeFromProgID("Schedule.Service");
                var service = System.Activator.CreateInstance(typeofScheduleService);
                typeofScheduleService.InvokeMember("Connect", System.Reflection.BindingFlags.InvokeMethod, null, service, new object[] { });
                var rootFolder = typeofScheduleService.InvokeMember("GetFolder", System.Reflection.BindingFlags.InvokeMethod, null, service, new object[] { @"" });
                var taskCollection = typeofScheduleService.InvokeMember("GetTasks", System.Reflection.BindingFlags.InvokeMethod, null, rootFolder, new object[] { 0 });
                var numberOfTasks = int.Parse(typeofScheduleService.InvokeMember("Count", System.Reflection.BindingFlags.GetProperty, null, taskCollection, new object[] { }).ToString());
                foreach(var task in taskCollection as IEnumerable)
                {
                    var taskName = typeofScheduleService.InvokeMember("Name", System.Reflection.BindingFlags.GetProperty, null, task, new object[] { }).ToString();
                    var taskState = int.Parse(typeofScheduleService.InvokeMember("State", System.Reflection.BindingFlags.GetProperty, null, task, new object[] { }).ToString());
                   //略去switch部分
                }
  • 相关阅读:
    node.js前后台交互示例 -- 使用node.js实现用户注册功能
    window对象
    ajax模仿iframe
    判断浏览器是否支持某些新属性---placeholder兼容问题解决
    jQuery简单tab按钮切换
    js函数的解析与执行过程
    js全局的解析与执行过程
    OKR解读
    《富爸爸穷爸爸》读书笔记【2020207-19】
    《金字塔原理》读书笔记【2020111-30】一读+二读
  • 原文地址:https://www.cnblogs.com/nanfei/p/6098359.html
Copyright © 2011-2022 走看看