2009-02-18 3 views
-1

У меня есть массив структур в одном классе C#, и я хочу передать эти данные в другой класс.Передайте структуру другому классу

Вот мой код

private struct strClassOfService 
{ 
    public string COS; 
    public string myValue; 
} 

private strClassOfService[] arrCOS = null; 

// 
// some code that loads arrCOS with data 
// 

// 
// here is where i will instantiate another class and 
// set the arrCOS so I can use it in the other class 
// 

Если все остальное терпит неудачу, я полагаю, я мог бы перезагрузить данные в другом классе. Но мне любопытно, есть ли способ. Пока мои попытки потерпели неудачу.

+0

Можете ли вы рассказать о том, как и почему ваши попытки не удались. Покажите, как вы пытаетесь передать массив и использовать его в другом классе. Из вашего сообщения я не могу сказать, видите ли вы время компиляции или ошибки времени выполнения. –

+0

Я получаю ошибку компилятора. Я не помню точной ошибки, но после выполнения некоторых исследований я смог передать его методу класса B и загрузить его таким образом. Я не знаю, является ли это самым эффективным способом, но у меня есть крайний срок на следующей неделе. Надеюсь, у меня будет время изучить его самостоятельно. –

ответ

3

Ну, с одной стороны, если вы намерены передать структуру другому классу, вы должны сделать определение структуры общедоступным (или, по крайней мере, внутренним) ... как только вы это сделаете, вы можете использовать всевозможные методы (свойства, вызовы методов и т. д.) для копирования данных в другой класс.

две методики приведены ниже (конечно, вам нужно использовать только один ...)

public class Foo1 
{ 
    public struct Bar 
    { 
     string A; 
     string B; 
    } 

    private Bar[] data; 

    // Using a method 
    public Bar[] ExportData() 
    { 
     return data; 
    } 

    // Using properties 
    public Bar[] DataProperty 
    { 
     get { return data; } 
    } 
} 

public class Foo2 
{ 
    private Foo1.Bar[] data; 

    // Using a method 
    public void ImportData(Foo1 source) 
    { 
     this.data = source.ExportData(); 
    } 

    // Using properties 
    public Foo1.Bar[] DataProperty 
    { 
     get { return data; } 
    } 

    public void ReadProperty(Foo1 source) 
    { 
     this.DataProperty = source.DataProperty; 
    } 
} 
+0

ОК, я сделаю это публичным. –

+0

Сделать это публично сделал трюк большое спасибо. –

0

Если вы не хотите, чтобы ваш public-структуру, вы могли бы рассмотреть вопрос об объявлении его internal вместо этого: таким образом он доступен только для других классов в той же сборке.

+0

Я попробую установить структуру внутри. Благодарю. –

Смежные вопросы