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

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

C# - 一個(gè)列表中的多個(gè)泛型類型

C# - 一個(gè)列表中的多個(gè)泛型類型

C#
動(dòng)漫人物 2019-08-16 15:50:05
C# - 一個(gè)列表中的多個(gè)泛型類型這可能是不可能的,但我有這個(gè)課程:public class Metadata<DataType> where DataType : struct{     private DataType mDataType;}還有更多,但讓我們保持簡(jiǎn)單。泛型類型(DataType)僅限于where語(yǔ)句的值類型。我想要做的是擁有不同類型(DataType)的這些元數(shù)據(jù)對(duì)象的列表。如:List<Metadata> metadataObjects;metadataObjects.Add(new Metadata<int>());metadataObjects.Add(new Metadata<bool>());metadataObjects.Add(new Metadata<double>());這甚至可能嗎?
查看完整描述

3 回答

?
一只名叫tom的貓

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

public abstract class Metadata

{

}


// extend abstract Metadata class

public class Metadata<DataType> : Metadata where DataType : struct

{

    private DataType mDataType;

}


查看完整回答
反對(duì) 回復(fù) 2019-08-16
?
偶然的你

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

根據(jù)leppie的回答,為什么不建立MetaData一個(gè)界面:

public interface IMetaData { }public class Metadata<DataType> : IMetaData where DataType : struct{
    private DataType mDataType;}


查看完整回答
反對(duì) 回復(fù) 2019-08-16
?
DIEA

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

我還使用了非通用版本,使用new關(guān)鍵字:

public interface IMetadata{
    Type DataType { get; }

    object Data { get; }}public interface IMetadata<TData> : IMetadata{
    new TData Data { get; }}

顯式接口實(shí)現(xiàn)用于允許兩個(gè)Data成員:

public class Metadata<TData> : IMetadata<TData>{
    public Metadata(TData data)
    {
       Data = data;
    }

    public Type DataType
    {
        get { return typeof(TData); }
    }

    object IMetadata.Data
    {
        get { return Data; }
    }

    public TData Data { get; private set; }}

您可以派生一個(gè)版本定位值類型:

public interface IValueTypeMetadata : IMetadata{}public interface IValueTypeMetadata<TData> : IMetadata<TData>, IValueTypeMetadata where TData : struct{}public class ValueTypeMetadata<TData> : Metadata<TData>, IValueTypeMetadata<TData> where TData : struct{
    public ValueTypeMetadata(TData data) : base(data)
    {}}

這可以擴(kuò)展到任何類型的通用約束。


查看完整回答
反對(duì) 回復(fù) 2019-08-16
  • 3 回答
  • 0 關(guān)注
  • 1544 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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