none
急求~!关于vbfixedstring在vb.net和c#中的用法 RRS feed

  • 问题

  • 我现在要将    <VBFixedString(48), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst:=48)> Public szMainTitle() As Char 转换成C#,请问该如何操作,谢谢!
    wis_it
    2009年11月23日 8:26

答案

  • 你好!
         方法里的局部变量不能用特性标记,你需要这样:
         public class AccessModifiers
        {
            [VBFixedString(48)]
            public string s = "asdf";
            。。。

    周雪峰
    • 已标记为答案 wis_it 2009年11月24日 1:12
    2009年11月23日 10:38
    版主
  • 你好!
         添加Microsoft.VisualBasic.dll程序集引用,你同样可以使用 VBFixedString特性:
      [VBFixedString(48)]  
      string   Name   =   "xxxxxx";
    周雪峰
    • 已标记为答案 wis_it 2009年11月24日 1:13
    2009年11月23日 8:49
    版主
  • /Addmodule是用来添加模块文件的,你添加的是vb文件啊!
    周雪峰
    • 已标记为答案 wis_it 2010年5月26日 1:17
    2009年11月24日 6:45
    版主

全部回复

  • 你好!
         添加Microsoft.VisualBasic.dll程序集引用,你同样可以使用 VBFixedString特性:
      [VBFixedString(48)]  
      string   Name   =   "xxxxxx";
    周雪峰
    • 已标记为答案 wis_it 2009年11月24日 1:13
    2009年11月23日 8:49
    版主
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Microsoft.VisualBasic;

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
            [VBFixedString(48)] 
            string   Name   =   "xxxxxx";
            }
     }
    }

    rebuilding occurs error
    Error    1    Invalid expression term '['   
    Error    2    ; expected  
    Error    3    Invalid expression term ']'  
    Error    4    ; expected 
    Error    5    ; expected  
    wis_it
    2009年11月23日 9:01
  • 你好!
         方法里的局部变量不能用特性标记,你需要这样:
         public class AccessModifiers
        {
            [VBFixedString(48)]
            public string s = "asdf";
            。。。

    周雪峰
    • 已标记为答案 wis_it 2009年11月24日 1:12
    2009年11月23日 10:38
    版主
  • Thank you for your reply,I understand your meaning,Thank you again!
    wis_it
    • 已标记为答案 wis_it 2009年11月24日 1:12
    • 取消答案标记 wis_it 2009年11月24日 1:13
    2009年11月24日 1:11
  • Not at all!wis_it
    Welcome to here again!

    周雪峰
    2009年11月24日 1:23
    版主
  • 顺便我想问个问题,就是关于vb.net module文件的应用,而在C#中我也想有个这样的文件
    在vb.net中我有个module文件在一个工程中,并且其他工程都将调用这个文件中的方法,这时我只需要在工程中导入(project->property->reference中选中这个文件所在的工程即可),但是我现在将这个文件提到C#工程中,这样必须在引用的每个工程中的每个文件中要添加import project.moduleFile,由于文件非常多,很麻烦,所以想问问!
    wis_it
    2009年11月24日 2:26
  • 你好!
         可以把这个模块编译到一个dll中,然后直接引用!
    周雪峰
    2009年11月24日 3:13
    版主
  • 但是我现在不是想把这个文件和别的一些东西提到c#中啊,但是C#没有类似module这样的修饰符,所以.......,vb.net 中  我是向你上面所说的做的。
    wis_it
    2009年11月24日 3:24
  • 命令行编译器:
    csc /Addmodule:project.moduleFile test.cs

    周雪峰
    2009年11月24日 4:10
    版主
  • 请给我个建议哦,我是在线等你的消息呢
    wis_it
    2009年11月24日 4:10
  • 非常抱歉,我无法完成,调用时候 报File is corrupt
    commandLine:csc /Addmodule:ModResManage.vb test.cs
    我将ModResManage.vb放到了csc.exe的文件下,然后创建了空文件test.cs
    运行出错。

    能否给我转下  ModResManage.vb

    Public Module ModResManage

        Private resourceMan As Global.System.Resources.ResourceManager
        Private resourceCulture As Global.System.Globalization.CultureInfo

        Public ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
            Get
                If Object.ReferenceEquals(resourceMan, Nothing) Then
                    Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("AFAS.Entity.Resources", Reflection.Assembly.GetExecutingAssembly())
                    resourceMan = temp
                End If
                Return resourceMan
            End Get
        End Property

        <Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
           Public Property Culture() As Global.System.Globalization.CultureInfo
            Get
                Return resourceCulture
            End Get
            Set(ByVal value As Global.System.Globalization.CultureInfo)
                resourceCulture = value
            End Set
        End Property

        
             
            '''<summary>
            '''  Looks up a localized string similar to     *)取引内容に想定外の大きな金額が設定されている可能性があります。.
            '''</summary>
            Public ReadOnly Property ADDNEWSKP_TBL_TRZ_TORIZAN_FXOP() As String
                Get
                    Return ResourceManager.GetString("ADDNEWSKP_TBL_TRZ_TORIZAN_FXOP", resourceCulture)
                End Get
            End Property
           
            '''<summary>
            '''  Looks up a localized string similar to データ更新中にエラーが発生しました[AddNewSKP_TBL_TRZ_TORIZAN_SW].
            '''</summary>
            Public ReadOnly Property ADDNEWSKP_TBL_TRZ_TORIZAN_SW() As String
                Get
                    Return ResourceManager.GetString("ADDNEWSKP_TBL_TRZ_TORIZAN_SW", resourceCulture)
                End Get
            End Property
           
            '''<summary>
            '''  Looks up a localized string similar to 選択されたポートフォリオ名にひもづく分析結果はありません。.
            '''</summary>
            Public ReadOnly Property AFCREATETEMPVALTABLE() As String
                Get
                    Return ResourceManager.GetString("AFCREATETEMPVALTABLE", resourceCulture)
                End Get
            End Property
           
            '''<summary>
            '''  Looks up a localized string similar to ALL.
            '''</summary>
            Public ReadOnly Property ALL() As String
                Get
                    Return ResourceManager.GetString("ALL", resourceCulture)
                End Get
            End Property
           
    End Module


    wis_it
    2009年11月24日 4:44
  • 你好!
         你的目的是在C#中使用VB.NET中的类和方法吗?
         如果是这样,十分容易,你在VB.NET下生成dll,在C#项目中直接添加这个dll引用,然后就能使用里面的类了!
    周雪峰
    2009年11月24日 5:02
    版主
  • 不是这样的  我是将我这个Module文件转成C#,然后别的地方再用C#这个工程
    wis_it
    2009年11月24日 6:07
  • /Addmodule是用来添加模块文件的,你添加的是vb文件啊!
    周雪峰
    • 已标记为答案 wis_it 2010年5月26日 1:17
    2009年11月24日 6:45
    版主