我有以下代碼:如何讓蘭巴表達式類型是派生類的類型,從一個普通的基類
public abstract class EntityMapperBase<T>
{
protected void Map(string columnName, Func<EntityMapperBase<T>, object> func)
{
_mappings.Add(columnName, func);
}
protected object GetValueForColumn(string columnName)
{
return _mapping[columnName](this);
}
}
public class PersonMap: EntityMapperBase<PersonMap>
{
public string Name { get; set; }
public PersonMap()
{
Map(x => ((PersonMap)x).Name);
}
}
我非常不希望有投x
到PersonMap
類。
我該如何做到這一點?
假設'T'是'string'。你正在接受一個'Func'。你爲什麼期望能夠通過傳遞一個「基地」來調用?也許你的參數應該是'Func ,object>'?你想達到什麼目的?這是目前的X-Y問題。 –
我試圖訪問函數中派生類的屬性。像'Test(x => x.Name)'。 x將會是'Base',然後需要將x投射到T,試圖阻止這種情況發生。 –
adriaanp
也許你的方法也需要通用?不幸的是,正如我之前所說,你沒有告訴我們你實際上想要達到什麼目標,所以我們無法真正幫助你。 –