CS文件:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices; namespace AJAXEnabledWebApplication1.CSClasss
{
     //[StructLayout(LayoutKind.Sequential)]   
     public struct analogue
     {
         byte A_sta; //站号
         int A_id; //序号
         [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
         char[] A_name; //名称
         long A_address; //物理地址
         float A_factor; //系数
         float A_bottom; //底数
         byte A_clc; //
         byte A_flag; //越限标志         float A_up_yj; //越上限预警值
         float A_up_yj_jc; //解除越上限预警值
         float A_up_bj; //越上限报警值
         float A_up_bj_jc; //解除越上限报警值         float A_down_yj; //越下限预警值
         float A_down_yj_jc; //解除越下限预警值
         float A_down_bj; //越下限报警值
         float A_down_bj_jc; //解除越下限报警值
         float A_value; //数值
     }
     public unsafe class DataDll
    {
        [DllImport("DataDLL.dll")]
        public static extern IntPtr LoadAnaMem(int nIndex);
         public static unsafe analogue test()
        {
            analogue sData;
            sData = (analogue)Marshal.PtrToStructure(LoadAnaMem(470020), typeof(analogue));
            
            //pAna.A_flag = 1;
            sData.A_name = "zhxingway";
            return sData;
        }
        
    }
}编译时报错:错误 2 “AJAXEnabledWebApplication1.CSClasss.analogue.A_name”不可访问,因为它受保护级别限制 F:\WEB\Visual Studio 2005\Projects\ZedGraph\AJAXEnabledWebApplication1\CSClass\DataDll.cs 50 19 AJAXEnabledWebApplication1请各位朋友帮忙解决,谢谢.

解决方案 »

  1.   

    public byte A_sta;
      

  2.   

    public char[] A_name; 
      

  3.   


    public struct analogue
    {
    public:
             byte A_sta;        //站号
             int A_id;        //序号
             [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
             char[] A_name;    //名称
             long A_address;    //物理地址
             float A_factor;    //系数
             float A_bottom;    //底数
             byte A_clc;        //
             byte A_flag;        //越限标志         float A_up_yj;    //越上限预警值
             float A_up_yj_jc;    //解除越上限预警值
             float A_up_bj;    //越上限报警值
             float A_up_bj_jc;    //解除越上限报警值         float A_down_yj;        //越下限预警值
             float A_down_yj_jc;    //解除越下限预警值
             float A_down_bj;        //越下限报警值
             float A_down_bj_jc;    //解除越下限报警值
             float A_value;        //数值
    }
      

  4.   

    char[] A_name;   ---》改为
    public char[] A_name;   
      

  5.   

     sData.A_name = "zhxingway";
    要改为
    sData.A_name = "zhxingway".ToCharArray();
      

  6.   

     char[] A_name;
    ---------------
      public char[] A_name;
    可能public string A_name;更好点
      

  7.   

    public     char[] A_name;    //名称
      

  8.   

    如果不加修饰符默认是Private,在成员变量前面加上public吧....
      

  9.   

    你需要读写的字段都需要加上public
      

  10.   

    楼主,改成这样试试:
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]    
        public struct analogue //遥测数据
        {
            public byte A_sta; //站号
            public int A_id; //序号
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
            public byte[] A_name; //名称 原来是Char的
            public int A_address; //物理地址
            public float A_factor; //系数
            public float A_bottom; //底数
            public byte A_clc; //
            public byte A_flag; //越限标志        public float A_up_yj; //越上限预警值
            public float A_up_yj_jc; //解除越上限预警值
            public float A_up_bj; //越上限报警值
            public float A_up_bj_jc; //解除越上限报警值        public float A_down_yj; //越下限预警值
            public float A_down_yj_jc; //解除越下限预警值
            public float A_down_bj; //越下限报警值
            public float A_down_bj_jc; //解除越下限报警值
            public float A_value; //数值
        }  
      

  11.   

    你在所有的面前加上PUBLIC看行不?
      

  12.   


            public static void Main(string[] args)
            {
               
                DataInfo info;
                info.i = 5;
                Console.WriteLine(info.i);
                Console.ReadLine();
            }        public struct DataInfo
            {
                public int i;
            }
    试了一下,public可以解决