için mevcut türleri edinin Bu, eski .NET'teki tüm kullanılabilir türleri (örneğin, bazı arabirimler için) almak kolaydır, ancak yeni CoreCLR'de bunun nasıl yapılacağını bulamıyorum.CoreCLR
Yapmak istediğim, GetRepository gibi işlev görmektir; bu, IRepository uygulamasının varolan uygulamasına bakmalı ve bu türün yeni örneğini döndürmelidir. Uygulama farklı projede yer alacaktır.
AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes())
şimdilik CoreCLR için tek çözümdür:
Yani, .NET böyle bir şey kullanabilirsiniz
public T GetRepository<T>()
{
foreach (Type type in typeof(T).GetTypeInfo().Assembly.GetTypes())
if (typeof(T).IsAssignableFrom(type) && type.GetTypeInfo().IsClass)
return (T)Activator.CreateInstance(type);
return default(T);
}
Ama arayüzü ve uygulama yalnızca, çalışır aynı mecliste bulunan (ve bu benim durumum değil).
Teşekkür ederiz!
1 çizgi (yorum) ne CoreCLR olduğunu ve neden gerekir yazmak misiniz? (Mscorelib'in ne olduğunu bilirim) –
Benim için en önemlisi, web uygulamasını herhangi bir platformda (veya web sunucusuz bile bulutta, hatta kendi kendini barındırırken) çalıştırabilmenin, güncellenen küçük paketlere ayrılmış bir çerçeveye sahip olması bağımsız. Bence bu küçük bir devrim. Daha fazlasını asp.net web sitesinde okuyabilirsiniz. –
AppDomain.CurrentDomain.GetAssemblies() 'de CoreCLR'de görünüyor: bkz. [Here] (https://github.com/dotnet/coreclr/blob/cbf46fb0b6a0b209ed1caf4a680910b383e68cba/src/mscorlib/src/System/AppDomain.cs) – Christian