第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

具有類(lèi)約束的字段

具有類(lèi)約束的字段

C#
蠱毒傳說(shuō) 2022-11-21 21:26:20
我有一個(gè)具有類(lèi)類(lèi)型約束的泛型類(lèi)型的類(lèi)定義看起來(lái)像這樣public class ConnectedRepository<TEntity> where TEntity : class    {然后我在以下方法中使用它: public void LoadData<T>() where T:class        {             var GenRep = new ConnectedRepository<T>(c);            grdData.DataSource = GenRep.ToBindingList();        }我的問(wèn)題是我需要在包含此方法的類(lèi)中的其他地方使用 GenRep,因此我需要在此方法之外定義它,但我找不到正確的語(yǔ)法我需要這樣的東西:ConnectedRepository<??> GenRep;但無(wú)法找出正確的類(lèi)型定義任何幫助將非常感激Code for my repository: public class ConnectedRepository<TEntity> where TEntity : class    {        internal DbContext _context;        internal DbSet<TEntity> _dbSet;        public ConnectedRepository(DbContext context)        {            _context = context;            _dbSet = context.Set<TEntity>();        }        public IEnumerable<TEntity> ToBindingList()        {            _dbSet.Load();            return _dbSet.Local.ToBindingList();        }        public void SaveChanges()        {            _context.SaveChanges();        }    }這將從包含 gridview 的用戶(hù)控件中使用public partial class DataView : DevExpress.XtraEditors.XtraUserControl {    TechnicalServicesContext c = new TechnicalServicesContext();   /// <summary>   ///    /// </summary>    public DataView()     {        InitializeComponent();    }    /// <summary>    ///     /// </summary>    /// <typeparam name="T"></typeparam>    public void LoadData<T>() where T:class    {         var GenRep = new ConnectedRepository<T>(c);        grdData.DataSource = GenRep.ToBindingList();    }   public void SaveData()    {    }}這是我想用于任何實(shí)體的可重復(fù)使用的顯示
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

您不應(yīng)為每種新數(shù)據(jù)類(lèi)型的存儲(chǔ)庫(kù)創(chuàng)建新實(shí)例。對(duì)于許多不同的數(shù)據(jù)類(lèi)型,它將消耗大量?jī)?nèi)存。您可以將靜態(tài)類(lèi)包裝器與泛型方法一起使用


 public static class ConnectedRepository

    {

        private static DbContext _context;



        public static SetContext(DbContext context)

        {

            _context = context;


        } 


     public static IEnumerable<TEntity> ToBindingList<TEntity>() :  where TEntity : class

            {

                var dbSet = _context.Set<TEntity>();

                dbSet.Load()

                return dbSet.Local.ToBindingList();

            }

 }


查看完整回答
反對(duì) 回復(fù) 2022-11-21
?
翻翻過(guò)去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

我不確定你想要什么是完全清楚的。如果我猜對(duì)了,您想在周?chē)?lèi)的一個(gè)對(duì)象中的多個(gè)位置使用具有相同基礎(chǔ)類(lèi)型的泛型 ConnectedRepository 的相同實(shí)例,那么我會(huì)說(shuō)您需要制作依賴(lài)于它的類(lèi),而不僅僅是類(lèi)的單個(gè)方法。


public class ConnectedRepository<TEntity,T>

   where TEntity : class

   where T:class

{

    ConnectedRepository<T> GenRep;


    public ConnectedRepository(int c)

    {

        GenRep = new ConnectedRepository<T>(c); // now sure what c is, bt you could pass it to the constructor like this, if GenRep needs it

    }


     public void LoadData()

     {

        grdData.DataSource = GenRep.ToBindingList();

     }


     public void DoStuff()

     {  // do something else with  GenRep ?

     }


 }


查看完整回答
反對(duì) 回復(fù) 2022-11-21
?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊

將其作為私有存儲(chǔ)在類(lèi)中,例如

private ConnectedRepository<T> _genRep;

進(jìn)一步看,你是說(shuō)你想要一個(gè) T 類(lèi)型的泛型函數(shù),而類(lèi)頭中沒(méi)有提到 T?那是不允許的。泛型類(lèi)操作的所有類(lèi)型都必須在其頭文件中聲明,并且替換發(fā)生在編譯時(shí)。


查看完整回答
反對(duì) 回復(fù) 2022-11-21
  • 3 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)