Код: Выделить всё
using System;
using System.IO;
using System.Reflection;
using System.Runtime.Loader;
namespace AssemblyResolveTest
{
internal class Program
{
static void Main(string[] args)
{
//if I uncomment this line typeSecondAttempt would be null below
//var typeFirstAttempt = Type.GetType("DataClasses.TestDataClass");
var path = Path.Combine(Directory.GetCurrentDirectory(), "DataClasses.dll");
var assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(path);
var typeSecondAttempt = Type.GetType("DataClasses.TestDataClass, DataClasses");
}
}
Код: Выделить всё
using System;
using System.IO;
using System.Reflection;
namespace AssemblyResolveTestClassLibrary
{
public static class AssemblyResolver
{
static AssemblyResolver()
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (new AssemblyName(args.Name).Name == "DataClasses")
{
var path = Path.Combine(Directory.GetCurrentDirectory(), "DataClasses.dll");
return Assembly.LoadFile(path);
}
else
return null;
}
public static Type GetTestDataClassType()
{
return Type.GetType("DataClasses.TestDataClass, DataClasses");
}
}
}
Спасибо.
обновление - разъяснение моего проекта реальная структура (упрощенная):
Interfaces - NetStandard20 Библиотека. Допустим, это имеет: < /p>
Код: Выделить всё
public interface ISampleResult
{
Guid Id { get; }
}
public interface ISampleService
{
ISampleResult GetSampleResult();
}
Код: Выделить всё
public class SampleResult(Guid id) : ISampleResult
{
public Guid Id { get; } = id;
}
Код: Выделить всё
public class SampleService : ISampleService
{
public ISampleResult GetSampleResult()
{
return new SampleResult(Guid.Empty);
}
}
Не стесняйтесь задавать вопросы, если я недостаточно уточнил.
Подробнее здесь: https://stackoverflow.com/questions/797 ... -framework