Я создал общий класс, который сохраняет и запрашивает объекты из плоского файла. Мне все время приходится менять аргументы метода на объекты, поэтому я могу их отбросить, и мне интересно, правильно ли я это сделаю...
'T' всегда наследует 'FlatFileRecord'
Это не скомпилируется:
public class FlatFile<T>
{
public void Save(T record)
{
FlatFileRecord castedRecord = (FlatFileRecord)record;
castedRecord.RecordNumber...
}
}
Этот компилятор, но, похоже, превзойдет все точки строго типизированного общего класса:
public class FlatFile<T>
{
public void Save(object record)
{
FlatFileRecord castedRecord = (FlatFileRecord)record;
castedRecord.RecordNumber...
}
}
Если T всегда будет выведено из FlatFileRecord, то ограничьте его таким образом:
public class FlatFile<T> where T : FlatFileRecord
{
public void Save(T record)
{
FlatFileRecord flatRecord = record;
flatRecord.RecordNumber...
}
}
Если вам нужно обойтись без ограничения по какой-либо причине, вы можете применить к объекту, а затем снова вернуться:
public class FlatFile<T>
{
public void Save(T record)
{
FlatFileRecord flatRecord = (FlatFileRecord)(object)record;
flatRecord.RecordNumber...
}
}