Прежде всего, вам не нужно вызывать ToString()
для строк.
mts_boltspec.TS_OPRID = struser
.ToString()
.Substring(struser.LastIndexOf("\\") + 1)
.ToUpper();
mts_boltspec.TS_FUNCT = Action.ToString();
Должно быть просто
mts_boltspec.TS_OPRID = struser
.Substring(struser.LastIndexOf("\\") + 1)
.ToUpper();
mts_boltspec.TS_FUNCT = Action;
Во-вторых, рекомендации Microsoft предлагают строчные параметры
internal void TrackAggrTest(mts_aggrtest mts_aggrtest, string struser, string Action)
должно быть
internal void TrackAggrTest(mts_aggrtest mts_aggrtest, string struser, string action)
Наконец,вам не нужно пустое выражение возврата.
internal void TrackAggrTest(mts_aggrtest mts_aggrtest, string struser, string action)
{
mts_boltspec.TS_OPRID = struser
.Substring(struser.LastIndexOf("\\") + 1)
.ToUpper();
mts_boltspec.TS_DATENT = DateTime.Today;
mts_boltspec.TS_FUNCT;
}
С базовыми возможностями вы можете объединить все эти методы в один, используя generics и Action (делегат) .Чтобы сделать читабельным, я бы также создал метод расширения.
internal static class TrackAggrTestExtensions
{
public static void TrackAggrTest<TBoltSpec>(this TBoltSpec instance,
string struser,
string funct,
Action<TBoltSpec, string> assignOprId,
Action<TBoltSpec, DateTime> assignDateNT,
Action<TBoltSpec, string> assignFunct)
{
var oprid = struser
.Substring(struser.LastIndexOf("\\") + 1)
.ToUpper();
var datent = DateTime.Today;
assignOprId(instance, oprid);
assignDateNT(instance, datent);
assignFunct(instance, funct);
}
}
Теперь ваши звонки выглядят так:
myAggrTest.TrackAggrTest(struser,
action,
(i, id) => i.F_OPRID = id,
(i, dt) => i.F_DATENT = dt,
(i, f) => i.F_FUNCT = f);
myBoltTest.TrackAggrTest(struser,
action,
(i, id) => i.T_OPRID = id,
(i, dt) => i.T_DATENT = dt,
(i, f) => i.T_FUNCT = f);
myBoltSpec.TrackAggrTest(struser,
action,
(i, id) => i.TS_OPRID = id,
(i, dt) => i.TS_DATENT = dt,
(i, f) => i.TS_FUNCT = f);
Не совсем уверен, что это хоть немного лучше.