Library of reflection related functionality and extension methods.
ByteDev.Reflection is hosted as a package on nuget.org. To install from the Package Manager Console in Visual Studio run:
Install-Package ByteDev.Reflection
Further details can be found on the nuget page.
Releases follow semantic versioning.
Full details of the release notes can be viewed on GitHub.
Represents an assembly's embedded resource.
// Retrieve an assembly's embedded resource and save it to disk
var assembly = Assembly.GetExecutingAssembly();
var embeddedFile = "EmbeddedResource1.txt";
AssemblyEmbeddedResource resource = AssemblyEmbeddedResource.CreateFromAssembly(assembly, embeddedFile);
resource.Save(Path.Combine(@"C:\Temp\", embeddedFile));
Initialize objects by calling their constructors using reflection.
// Initialize with no params
public class PrivateCtor
{
private PrivateCtor()
{
}
}
// ...
var test = ObjectConstruction.ConstructNonPublic<PrivateCtor>();
// Initialize with params
public class InternalCtorWithParam
{
public int Value { get; set; }
internal InternalCtorWithParam(int value)
{
Value = value;
}
}
// ...
var parameters = new Dictionary<Type, object>
{
{typeof(int), 10}
};
var test = ObjectConstruction.ConstructNonPublic<InternalCtorWithParam>(parameters);
// test.Value == 10
To use any extension methods simply reference the ByteDev.Reflection
namespace.
Assembly:
- GetAssemblyAttribute
- GetFileVersion
- GetManifestResourceName
- GetSubClasses
- GetVersion
Generic:
- InvokeMethod
MemberInfo:
- GetAttribute
- HasAttribute
Object:
- GetPropertyValue
- GetPropertyValue
- GetPropertiesAsDictionary
- SetPropertyReadOnlyValue
- SetPropertyValue
Type:
- GetBaseTypes
- GetConstants
- GetConstantsValues
- GetDefault
- GetEnumProperties
- GetPropertyOrThrow
- GetPropertiesWithAttribute
- GetPropertiesOfType
- GetImplementedInterfaces
- GetStaticPropertyOrThrow
- GetStaticPropertyValue
- HasAttribute
- IsInNamespace
- IsNullable
- IsTestClass