如何在变量中存储将用于代替通用 class 的 class 的名称?
How to store in a variable the name of the class that will be used in place of a generic class?
为了重构代码,我创建了一个基础 class,其中放置了所有常用功能。我坚持要转换为方法的这个委托。
Func<LogImportTestArgs, IList<TranslationTask>>
getParserWithMocks = (args) =>
{
return TestParserWithMocks<MyGenericClass>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};
除了我不知道如何存储在变量中的通用 class 之外,一切都很简单。我试图将 class 的名称存储为字符串,但是当我用字符串替换 MyGenericClass
时出现错误。
protected IList<TranslationTask> getParserWithMocks(LogImportTestArgs args)
{
return TestParserWithMocks<MyGenericClass>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};
有没有办法存储变量中泛型 class 的值?否则我将不得不 copy/paste 在每次测试中使用相同的方法。我想要一个可以修改此方法的中心位置。
谢谢。
如果你想在那里参数化 MyGenericClass
,你需要使函数通用:
protected IList<TranslationTask> GetParserWithMocks<T> (LogImportTestArgs args)
{
return TestParserWithMocks<T>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};
那么在调用函数的时候,需要传入泛型:
IList<TranslationTask> tasks = GetParserWithMocks<MyGenericClass>(args);
不确定我是否完全理解,但您似乎希望该方法是通用的:
protected IList<TranslationTask> getParserWithMocks<T>(LogImportTestArgs args)
{
return TestParserWithMocks<T>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};
为了重构代码,我创建了一个基础 class,其中放置了所有常用功能。我坚持要转换为方法的这个委托。
Func<LogImportTestArgs, IList<TranslationTask>>
getParserWithMocks = (args) =>
{
return TestParserWithMocks<MyGenericClass>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};
除了我不知道如何存储在变量中的通用 class 之外,一切都很简单。我试图将 class 的名称存储为字符串,但是当我用字符串替换 MyGenericClass
时出现错误。
protected IList<TranslationTask> getParserWithMocks(LogImportTestArgs args)
{
return TestParserWithMocks<MyGenericClass>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};
有没有办法存储变量中泛型 class 的值?否则我将不得不 copy/paste 在每次测试中使用相同的方法。我想要一个可以修改此方法的中心位置。
谢谢。
如果你想在那里参数化 MyGenericClass
,你需要使函数通用:
protected IList<TranslationTask> GetParserWithMocks<T> (LogImportTestArgs args)
{
return TestParserWithMocks<T>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};
那么在调用函数的时候,需要传入泛型:
IList<TranslationTask> tasks = GetParserWithMocks<MyGenericClass>(args);
不确定我是否完全理解,但您似乎希望该方法是通用的:
protected IList<TranslationTask> getParserWithMocks<T>(LogImportTestArgs args)
{
return TestParserWithMocks<T>(
parserConstName: args.ParserConstName,
logFileName: args.LogFileName,
srcLocale: args.SrcLocale,
tgtLocale: args.TgtLocale,
tlType: args.TranslationType,
ttype: args.TTtype,
logMappingID: args.LogMappingID
);
};