C# Calling a dictionary within an extension class?

為{幸葍}努か 提交于 2019-12-12 02:32:46

问题


Re-written everything exactly as my program has it:

class DictionaryInitializer
{
    public class DictionarySetup
    {
        public string theDescription { get; set; }
        public string theClass { get; set; }
    }
    public class DictionaryInit
    {
        //IS_Revenues data
        public Dictionary<int, DictionarySetup> accountRevenue = new Dictionary<int, DictionarySetup>()
            {
                { 400000, new DictionarySetup {theDescription="Call", theClass="Revenues"}},
                { 400001, new DictionarySetup {theDescription="Bill", theClass="Revenues"}},
                { 495003, new DictionarySetup {theDescription="Revenue", theClass="Revenues"}}
            };


        public Dictionary<int, DictionarySetup> accountExpenses = new Dictionary<int, DictionarySetup>()
            {
                {790130, new DictionarySetup { theDescription="Currency Hedge", theClass="Other income/expense"}},
                {805520, new DictionarySetup { theDescription="Int Income", theClass="Other income/expense"}}
            };
}

On my mainform:

    DictionaryInit theDictionary;
    btnClick() {

    theDictionary = new DictionaryInit();
    //Some code to loop through a datagridview        
    //Somemore Code
                    foreach (var item in theDictionary.accountRevenue)
                    {
                        int theKey = item.Key;
                        if (theKey == keyCode)
                        {
                            DictionarySetup theValues = item.Value;
                            DGVMain.Rows[rowindex].Cells[3].Value = theValues.theDescription;
                            DGVMain.Rows[rowindex].Cells[11].Value = theValues.theClass;
                            DGVMain.Rows[rowindex].Cells[12].Value = "Sale of Services";
                            Recording(rowindex);
                        }
                    }
    }

Current work in progress:

                    DictionarySetup theValue;
                    if (theDictionary.accountExpenses.TryGetValue(keyCode,out theValue.theDescription) //[5]-> Account Type
                    {
                      //Some code to write dictionary data to the data grid view.

I'm working on making the TryGetValue and Contains(value) dictionary functions to work for now.

My current error messages are as follows:

"a property or indexer may not be passed as an out or ref parameter" when attempting the trygetvalue

and finally when trying the extension method i'm trying to create:

 "Inconsistent accessibility, Dictionary<int, DictionaryInitializer.DictionarySetup> is less accessible than the method DictionaryUse<int, DictionaryInitializer.DictionarySetup>"

回答1:


You have to make your field public....

Dictionary<int, DictionarySetup> accountRevenue

should be

public Dictionary<int, DictionarySetup> accountRevenue

if you want to refer to it from outside the class..

This part seems to also be missing a variable name;

public void DictionaryUse (int code, int key, Dictionary)

should be

public void DictionaryUse (int code, int key, Dictionary<int, DictionarySetup> theDictionary)

But I agree with the other comments, you seem to be re-inventing the wheel, just use the existing Dictionary utility methods



来源:https://stackoverflow.com/questions/43040879/c-sharp-calling-a-dictionary-within-an-extension-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!