flavien / quickwire Goto Github PK
View Code? Open in Web Editor NEWAttribute-based dependency injection for .NET.
License: Apache License 2.0
Attribute-based dependency injection for .NET.
License: Apache License 2.0
[RegisterService]
public class Config
{
[InjectConfiguration("test:not_exist")]
public string Test { get; set; } = "default";
}
When Test
field is not set in appsettings.json
file, this value should be the default value instead of null ,
public Func<IServiceProvider, object> GetFactory(Type type)
{
if (type.ContainsGenericParameters)
throw new ArgumentException($"The service type '{type.FullName}' must not be generic.");
ConstructorInfo constructorInfo = GetConstructor(type);
ParameterInfo[] parameters = constructorInfo.GetParameters();
IDependencyResolver?[] dependencyResolvers = GetParametersDependencyResolvers(parameters);
DelegateCompiler.Constructor constructor = DelegateCompiler.CreateConstructor(constructorInfo);
List<SetterInfo> setters = GetSetters(type);
return delegate (IServiceProvider serviceProvider)
{
object?[] arguments = new object[parameters.Length];
for (int i = 0; i < parameters.Length; i++)
arguments[i] = Resolve(serviceProvider, parameters[i].ParameterType, dependencyResolvers[i]);
object result = constructor(arguments);
foreach (SetterInfo setter in setters)
{
// need check null here
object? resolvedDependency = Resolve(serviceProvider, setter.ServiceType, setter.DependencyResolver);
setter.Setter(result, resolvedDependency);
}
return result;
};
}
this is a great library that I am planning to integrate it into my project,but currently I have some questions
i see this in readme:
When applying the [RegisterFactory] attribute to a static method, the static method will be registered as a factory used
what does it mean? What is the useage of this attribute?
some sample code or a more detailed explanation would be greatly appreciated😊
Hi
It would be quite useful to add some [ServiceIgnore]
attribute to skip corner cases. Things like complex factories or open generic types can and should be handled manually.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.