簡體   English   中英

定義一個C#方法,它接受任何可以與方括號一起使用的對象

[英]Define a single C# method which accepts any object that can be used with square brackets

我正在實現一種方法,給定一些通過DataRowView或DbDataReader檢索的數據,為DTO提供水合作用。

因此,兩個數據源都實現了通過檢索特定字段值的可能性

public object this[string name] { get; }

但是這種行為不受兩個類之間的公共接口的約束,因此我不能使用它,並且必須在不改變單個位的情況下兩次寫入水合代碼。 這很糟糕。

public MyDTO Hydrate(DataRowView data)
{
    MyDTO f_return = new MyDTO();
    f_return.Foo = (string)data["foo"];
    f_return.Bar = (uint)data["bar"];
    f_return.Baz = (DateTime)data["baz"];
    return f_return;
}

public MyDTO Hydrate(DbDataReader data)
{
    MyDTO f_return = new MyDTO();
    f_return.Foo = (string)data["foo"];
    f_return.Bar = (uint)data["bar"];
    f_return.Baz = (DateTime)data["baz"];
    return f_return;
}

我是否缺少一些C#語法,它允許我定義一個方法來限制任何可以通過方括號訪問的對象的輸入?

像這樣的東西

public MyDTO Hydrate(object[string] data)

提前致謝!

我是否缺少一些C#語法,它允許我定義一個方法來限制任何可以通過方括號訪問的對象的輸入?

沒有; 沒有C#語法來表達“可索引的東西”,除了用該索引器創建一個interface ,即

interface ISomeInterface {
    object this[string name] {get;}
}

並限制自己使用ISomeInterface實例,或者使用where T : ISomeInterface約束的一些通用<T>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM