public interface IGroups
{
    IList<Group> GetGroups(UserGroup usrGrp);
}

public class GetUsrGrps : IGroups
{
    public IList<Group> GetGroups(UserGroup usrGroup)
    {
        List<Group> grps = new List<Group>();
        UserGroupDao UsrGrpDao = new UserGroupDao();
        DbDataReader ddr = UsrGrpDao.GetUserGroups(usrGroup);
        if (ddr.HasRows)
        {
            while (ddr.Read())
            {
                Group grp = new Group();
                grp.GroupId = Convert.ToInt32(ddr["groupId"]);
                grps.Add(grp);
            }
        }
        else
        {
            Group grp = new Group();
            grp.GroupId = Convert.ToInt32("0");
            grps.Add(grp);
        }
        return grps;
    }
}



 public UserGroup GetUser(UserGroup usrGrp)
    {

        UserGroupDao usrGroupDao = new UserGroupDao();
        DbDataReader ddr = usrGroupDao.GetUser(usrGrp);
        if (ddr.HasRows)
        {
            while (ddr.Read())
            {
                usrGrp.Id = Convert.ToInt32(ddr["id"]);
                usrGrp.FirstName = Convert.ToString(ddr["firstname"]);
                usrGrp.LastName = Convert.ToString(ddr["lastname"]);
                usrGrp.UserName = Convert.ToString(ddr["username"]);
            }
        }
        usrGrp.UserGroups = GetUsrGrps.GetGroups(usrGrp);
        return this;
    }

usrGrp.Groups is defined as IList<Group>...?  }

**usrGrp.UserGroups = GetUsrGrps.GetGroups(usrGrp); <- Intellisense विधि नहीं देखता है। मुझे मिलता है 'गैर-स्थिर क्षेत्र, विधि या संपत्ति के लिए एक वस्तु संदर्भ आवश्यक है' GetUsrGrps.GetGroups (उपयोगकर्ता समूह) '???

0
ericm 14 अप्रैल 2011, 23:32

6 जवाब

सबसे बढ़िया उत्तर

आपका सबसे अच्छा विकल्प IGroups इंटरफ़ेस को छोड़ना है, और विधि को स्थिर के रूप में चिह्नित करना है। चूंकि यह वैसे भी सिर्फ एक डेटाबेस एक्सेस ऑब्जेक्ट है, इसलिए यह एक स्थिर विधि होने के लिए समझ में आता है।

यदि आप इंटरफ़ेस रखना चाहते हैं, तो आपको किसी ऑब्जेक्ट को तुरंत चालू करना होगा।

usrGrp.UserGroups = (new GetUsrGrps).GetGroups(usrGrp);
0
Jeffrey L Whitledge 15 अप्रैल 2011, 19:16

GetGroups एक इंस्टेंस विधि है। इसे static कीवर्ड से चिह्नित करें या इसके युक्त वर्ग का एक उदाहरण बनाएं और उस उदाहरण से विधि का संदर्भ लें। यह ध्यान में रखते हुए कि विधि, GetGroups इंटरफ़ेस का हिस्सा है, मैं इंस्टेंस रूट पर जाने की अनुशंसा करता हूं ताकि आपकी कक्षा परिभाषा अभी भी इंटरफ़ेस अनुबंध से मेल खाती हो।

1
Jeff Yates 14 अप्रैल 2011, 23:34

आपको वह त्रुटि इसलिए मिल रही है क्योंकि GetGroups GetUsrGrps पर एक स्थिर विधि नहीं है।

आपको या तो इसे स्थिर घोषित करना होगा या GetGroups विधि को कॉल करने के लिए GetUsrGrps का एक नया उदाहरण बनाना होगा।

1
rsbarro 14 अप्रैल 2011, 23:35

यह उचित होना चाहिए

usrGrp.UserGroups = GetGroups(usrGrp);

संकलक सोचता है कि आप एक स्थिर विधि को कॉल करने का प्रयास कर रहे हैं, जो GetGroups नहीं है

0
MerickOWA 14 अप्रैल 2011, 23:35

तुम्हें चाहिए

 IGroups groups = new GetUsrGrps();
 usrGrp.UserGroups = groups.GetGroups(usrGrp);

आप वर्तमान में इसे ऐसे कह रहे हैं जैसे कि यह स्थिर था, लेकिन ऐसा लगता है कि आपका इरादा इसे IGroups इंटरफ़ेस के माध्यम से एक्सेस करना है।

0
satnhak 14 अप्रैल 2011, 23:38

आपकी विधि स्थिर नहीं है या आपकी कक्षा तत्काल नहीं है।

आपको कक्षा का एक उदाहरण बनाना होगा जैसे:

var getUsrGrps = new GetUsrGrps();

फिर बदलें

usrGrp.UserGroups = GetUsrGrps.GetGroups(usrGrp);

प्रति

usrGrp.UserGroups = getUsrGrps.GetGroups(usrGrp);

या

परिवर्तन

public IList<Group> GetGroups(UserGroup usrGroup)

प्रति

public static IList<Group> GetGroups(UserGroup usrGroup)

ऐसा लगता है कि या तो आपके लिए काम करेगा।

0
Cos Callis 14 अप्रैल 2011, 23:40