Jas*_*son 4 .net system.reflection .net-core asp.net-core mapster
我有一个 ASP.NET Core 项目 (netcoreapp2.0),它引用类库项目 (netstandard2.0) 中的模型。我正在尝试使用 Mapster 来映射存储在类库中的对象。Mapster 的文档说使用以下代码从 Startup.cs 调用 Scan 方法:
TypeAdapterConfig.GlobalSettings.Scan(assembly1, assembly2, assemblyN)
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是如何最好地获取类库的程序集引用以传递给 Scan 方法。我认为这更像是一个一般的 .NET 问题,而不是特定于 Mapster 的问题。我能想到的最好的是以下内容,但感觉很尴尬。
private Assembly GetAssemblyByName(string name)
{
var assemblies = Assembly.GetEntryAssembly().GetReferencedAssemblies();
var assemblyName = assemblies.FirstOrDefault(i => i.Name == name);
var assembly = Assembly.Load(assemblyName);
return assembly;
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来处理这个问题?
更新:显然我上面的解决方案破坏了代码优先迁移。任何人都可以建议一种方法来实现这一目标吗?
使用其中定义的类型获取程序集。
var assembly = Assembly.GetAssembly(typeof(NameSpace.TypeName));
Run Code Online (Sandbox Code Playgroud)
更新以解决您的评论(但我不建议这样做):
使用GetExecutingAssembly()而不是,GetEntryAssembly()您在问题中的解决方案不会中断。奖励:GetReferencedAssemblies()用类似的东西过滤结果,.Where(a => a.Name.StartsWith("CompanyName"))你甚至可以摆脱name争论。
我不推荐这样做,因为:
| 归档时间: |
|
| 查看次数: |
2046 次 |
| 最近记录: |