2012-04-09 15 views
12

estoy recibiendo el siguiente erroraccesibilidad inconsistente

accesibilidad inconsistente: tipo de parámetro 'Db.Form1.ConnectionString' es menos accesible que el método 'Db.Form1.BuildConnectionString (Db.Form1.ConnectionString)'

//Name spaces 
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; 
using System.Collections; 
using System.Diagnostics; 
using System.Data.OleDb; 
using System.IO; 
using System.Drawing.Printing; 

// 
    namespace Db 
{ 
    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    public void SetBusy() 
    { 
     this.Cursor = Cursors.WaitCursor; 
     Application.DoEvents(); 
    } 
    public void SetFree() 
    { 
     this.Cursor = Cursors.Default; 
     Application.DoEvents(); 
    } 
    //connection string into parts 
    struct ConnectionString 
    { 
     public string Provider; 
     public string DataSource; 
     public string UserId; 
     public string Password; 
     public string Database; 
    } 
    //Declare 
    public string BuildConnectionString(ConnectionString connStr) ------> getting error here 
    { 
     string[] parts = new string[5]; 
     parts[0] = "Provider=" + connStr.Provider; 
     parts[1] = "Data Source=" + connStr.DataSource; 
     parts[2] = "User Id=" + connStr.UserId; 
     parts[3] = "Password=" + connStr.Password; 
     parts[4] = "Initial Catalog=" + connStr.Database; 
     return string.Join(";", parts); 
    } 
    // settings 
    public bool IsValidConnectionForPrinting() 
    { 
     SetBusy(); 

     ConnectionString connStr = new ConnectionString(); 
     connStr.Provider = cboProvider.Text; 
     connStr.DataSource = cboDataSource.Text; 
     connStr.UserId = txtUserId.Text; 
     connStr.Password = txtPassword.Text; 
     connStr.Database = cboDatabase.Text; 
     //connection string to database 
     string connectionString = BuildConnectionString(connStr); 
     OleDbConnection conn = new OleDbConnection(connectionString); 
     try 
     { 
      conn.Open(); 
      OleDbCommand cmd = conn.CreateCommand; 
      cmd.CommandType = CommandType.TableDirect; 
      cmd.CommandText = "vw_pr_DL"; 
      cmd.ExecuteScalar(); 
      cmd.CommandText = "vw_pr_VR"; 
      cmd.ExecuteScalar(); 
      //cmd.CommandText = "vw_pr_VR" 
      //cmd.ExecuteScalar() 
      conn.Close(); 
     } 
    //Exception messages 
     catch (Exception ex) 
     { 
      SetFree(); 
      if (ex.Message.StartsWith("Invalid object name")) 
      { 
       MessageBox.Show(ex.Message.Replace("Invalid object name", "Table or view not found"), "Connection Test"); 
      } 
      else 
      { 
       MessageBox.Show(ex.GetBaseException().Message, "Connection Test"); 
      } 
      return false; 
     } 
     SetFree(); 
     return true; 
    } 

// cuando el usuario haga clic testbutton

private void btnConnTest_Click(object sender, EventArgs e) 
{ 

if (IsValidConnectionForPrinting()) 
    { 
     MessageBox.Show("Connection succeeded", "Connection Test"); 
    } 
} 
+1

¿Cuál es tu pregunta? Arregla la accesibilidad –

Respuesta

10

Su tipo ConnectionString no es public, sin embargo, un método público de una clase pública lo está utilizando como parámetro. También debe hacer el tipo public, por ejemplo:

// If it's a class 
public class ConnectionString { ... } 
31

Como se describe here, clases y las estructuras son privados por defecto si no se especifica ningún modificador de acceso. Donde se ha definido su estructura como:

struct ConnectionString 
{ 
    public string Provider; 
    public string DataSource; 
    public string UserId; 
    public string Password; 
    public string Database; 
} 

es necesario definir su lugar como:

public struct ConnectionString 
{ 
    public string Provider; 
    public string DataSource; 
    public string UserId; 
    public string Password; 
    public string Database; 
}