求助:VB.Net代码翻译成C#

leon51 2017-06-06 03:54:16
拜托C#大神将以下VB.Net代码翻译成C#,不要用工具或软件,本人刚学C#,稍复杂的修改不会,那样根本用不了,多谢了!
Public Function getAttr(ByVal obj As Object, ByVal attr_name As String) As Object

Dim attrs As Object
Dim attr As IAttribute
attrs = obj.AttrsEx1(True, False)
Dim i As Integer

For i = 0 To UBound(attrs)
attr = attrs(i)
If attr.Name = attr_name Then
Return attr
End If
Next
Return Nothing
End Function

Public Function getAttrValue(ByVal attr_point As IAttribute, ByVal type_str As String, Optional ByVal unit_str As Integer = 11) As String
getAttrValue = ""
If type_str = "Int" Then
getAttrValue = Str(attr_point.IntVal)
ElseIf type_str = "String" Then
getAttrValue = attr_point.StrVal
ElseIf type_str = "Length" Then
getAttrValue = Str(attr_point.Length(unit_str))
ElseIf type_str = "Double" Then
getAttrValue = Str(attr_point.DoubleVal)
ElseIf type_str = "AREA" Then
getAttrValue = Str(attr_point.Area(unit_str))
ElseIf type_str = "ENUM" Then
getAttrValue = attr_point.StrVal
ElseIf type_str = "Boolean" Then
getAttrValue = attr_point.BoolVal
End If
Return getAttrValue
End Function


Function setAttribute(ByVal obj As Object, ByVal attr_name As String, ByVal attr_type As String, ByVal attr_value As String, Optional ByVal attr_unit As Integer = 11) As Boolean
Dim attrMod As IAttributesModifier
attrMod = AM.AttributesModifier(obj)
If attr_type = "String" Then
Call attrMod.SetString(attr_name, attr_value)
ElseIf attr_type = "ENUM" Then
Call attrMod.SetString(attr_name, attr_value)
ElseIf attr_type = "Double" Then
Call attrMod.SetDouble(attr_name, attr_value)
ElseIf attr_type = "Length" Then
Call attrMod.SetLength(attr_name, attr_value, attr_unit)
ElseIf attr_type = "Int" Then
Call attrMod.SetInteger(attr_name, attr_value)
ElseIf attr_type = "Area" Then
Call attrMod.SetArea(attr_name, attr_value, attr_unit)
ElseIf attr_type = "Boolean" Then
Call attrMod.SetBoolean(attr_name, attr_value)
End If
attrMod.Run()
If statusCheck(attrMod) = False Then
Return False
End If
Return True
End Function

Public Function statusCheck(ByVal obj As Object) As Boolean
statusCheck = True
If obj.ErrorStatus <> 0 Then
MsgBox(obj.ErrorMessage)
Return False
End If
End Function
...全文
452 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon51 2017-06-15
  • 打赏
  • 举报
回复
Hi jy251,多谢你的帮忙,还有两个问题需要麻烦你。
 var attrs = obj.AttrsEx1(true, false);

此处提示:“object”不包含“AttrsEx1”的定义,并且找不到可接受类型为“object”的第一个参数的扩展方法“AttrsEx1”(是否缺少 using 指令或程序集引用?)
请问怎么处理?下图是官方的文档
leon51 2017-06-14
  • 打赏
  • 举报
回复
感谢9楼的回复,最近没有时间研究这个,有空再看吧。
jy251 2017-06-12
  • 打赏
  • 举报
回复


        IAttribute getAttr(object obj, string attr_name)
        {
            var attrs = obj.AttrsEx1(true, false);

            foreach (var attr in attrs)
            {
                if (attr.Name = attr_name)
                    return attr;
            }
        }

        string getAttrValue(IAttribute attr_point, string type_str, int unit_str = 11)
        {
            switch (type_str)
            {
                case "Int": return attr_point.IntVal.ToString();
                //.....
                default: return "";
            }
        }


        bool setAttribute(object obj, string attr_name, string attr_type, string attr_value, int attr_unit = 11)
        {
            IAttributesModifier attrMod = AM.AttributesModifier(obj);

            switch (attr_type)
            {
                case "String":
                    Call attrMod.SetString(attr_name, attr_value)
                    break;
                    //......
            }

            attrMod.Run();
            if (!statusCheck(attrMod)) return false;

            return true;
        }

        bool statusCheck(object obj)
        {
            if (obj.ErrorStatus != 0)
            {
                MessageBox.Show(obj.ErrorMessage);
                return false;
            }

            return true;
        }
绿领巾童鞋 2017-06-12
  • 打赏
  • 举报
回复
不过 复杂的不要奢望完美转换,不过你那些简单 的应该可以的
绿领巾童鞋 2017-06-12
  • 打赏
  • 举报
回复
下载 SharpDevelop 4.4 ,然后新建一个VB。net 项目 ,创建一个类 ,把上面的方法贴上,编译通过 后,右键项目,有一栏是转项目的,可以vb.net转c# 的
F546445693 2017-06-12
  • 打赏
  • 举报
回复
在线工具翻译下即可,除非语法有不一致,要不然都可以通过的
leon51 2017-06-12
  • 打赏
  • 举报
回复
版主,麻烦你帮忙删除此贴,多谢!
引用
帮你看了下,这代码很规则,完全可以用机器自动转。
happy61 2017-06-08
  • 打赏
  • 举报
回复
主要是 你Object 怎么会有AttrsEx1方法,应该是vb支持匿名方法,但是C#走不通,所以不清楚你obj.AttrsEx1(True, False)这个哪里来,obj明明只有object方法啊
threenewbee 2017-06-07
  • 打赏
  • 举报
回复
帮你看了下,这代码很规则,完全可以用机器自动转。
leon51 2017-06-07
  • 打赏
  • 举报
回复
这是我自己写的,用软件转换出错了不会修改。。。
leon51 2017-06-06
  • 打赏
  • 举报
回复
大神们帮帮手,给点建议也好,谢谢了

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧