2015-05-02 14 views
12

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

1 çizgi (yorum) ne CoreCLR olduğunu ve neden gerekir yazmak misiniz? (Mscorelib'in ne olduğunu bilirim) –

+0

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. –

+1

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

cevap

9

Yani, burada Microsoft'tan cevap: başlayarak: Kısacası https://github.com/dotnet/coreclr/issues/919

,

public IEnumerable<ILibraryInformation> GetLibraries(); 
public IEnumerable<ILibraryInformation> GetReferencingLibraries(string name); 

vb

UPD ile

Microsoft.Framework.Runtime.LibraryManager 

yeni bulunmuyoryerine RC2 kullanımı Microsoft.Extensions.DependencyModel.DependencyContext gelen:

DependencyContext.Default.CompileLibraries 
DependencyContext.Default.RuntimeLibraries 
+0

Artık çalışmıyor! Lütfen güncellemeniz için –

+1

@AkashKava cevabınızı güncelleyin. –

+0

Yeni DependencyContext'te GetReferencingLibraries (dize adı) için bir yedek var gibi görünmüyor! – irperez

İlgili konular