Black.Beard.ComponentModel 1.0.5

There is a newer version of this package available.
See the version list below for details.
dotnet add package Black.Beard.ComponentModel --version 1.0.5                
NuGet\Install-Package Black.Beard.ComponentModel -Version 1.0.5                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Black.Beard.ComponentModel" Version="1.0.5" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Black.Beard.ComponentModel --version 1.0.5                
#r "nuget: Black.Beard.ComponentModel, 1.0.5"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Black.Beard.ComponentModel as a Cake Addin
#addin nuget:?package=Black.Beard.ComponentModel&version=1.0.5

// Install Black.Beard.ComponentModel as a Cake Tool
#tool nuget:?package=Black.Beard.ComponentModel&version=1.0.5                

Black.Beard.ComponentModel

Build status

Method helper for resolve types and methods.

How to use

You can use in non-intrusive mode. use the type descriptor.

Register the new TypeDescriptorProvider

GenericTypeDescriptionProvider.Register<ExampleType>();

Create a new instance for the specified type

var instance = (ExampleType)TypeDescriptor.CreateInstance(null, typeof(ExampleType), null, null);
var p = TypeDescriptor.GetProperties(i);
var property = p[nameof(ExampleType.Message)];
property.GetValue(i).Should().Be("3");

Add a virtual property

The part based on PropertyTypeDescriptor is insparated from MatthewKing / DynamicDescriptors

var instanceToBind = new ExampleClass();

var descriptor = DynamicDescriptor.CreateFromInstance(instanceToBind);

descriptor.GetDynamicProperty("PropertyOne") // Get the property using its name.
    .SetDisplayName("Property #1")
    .SetDescription("The first property")
    .SetCategory("Example category");

descriptor.GetDynamicProperty((ExampleClass x) => x.Property2) // Get the property using an expression.
    .SetDisplayName("Property #2")
    .SetDescription("The second property")
    .SetCategory("Example category");

propertyGrid.SelectedObject = descriptor;

Binding to an object instance

We can create a DynamicDescriptor for an object instance:

var instance = new ExampleClass();

var descriptor = DynamicDescriptor.CreateFromInstance(instance);

Binding to a dictionary

We can create a DynamicDescriptor backed by a dictionary. This will act as if the dictionary key/value pairs are properties of a bound object:

var data = new Dictionary<string, object>();
data["Property1"] = "hello";
data["Property2"] = "world";

var descriptor = DynamicDescriptor.CreateFromDictionary(data);

We can also supply type information:

var data = new Dictionary<string, object>();
data["Property1"] = "value";
data["Property2"] = 1;

var types = new Dictionary<string, Type>();
types["Property1"] = typeof(string);
types["Property2"] = typeof(int);

var descriptor = DynamicDescriptor.CreateFromDictionary(data, types);

What can be customized?

DisplayName:

descriptor.GetDynamicProperty("PropertyName").SetDisplayName("Property display name");

This modifies the value returned by the DisplayName property.

Description:

descriptor.GetDynamicProperty("PropertyName").SetDescription("A description of the property");

This modifies the value returned by the Description property.

Category:

descriptor.GetDynamicProperty("PropertyName").SetCategory("Category name");

This modifies the value returned by the Category property.

Converter:

TypeConverter converter = /* your custom type converter */;
descriptor.GetDynamicProperty("PropertyName").SetConverter(converter);

This modifies the value returned by the Converter property.

IsReadOnly:

descriptor.GetDynamicProperty("PropertyName").SetReadOnly(true);

This modifies the value returned by the IsReadOnly property.

Property order:

descriptor.GetDynamicProperty("PropertyOne").SetPropertyOrder(1);
descriptor.GetDynamicProperty("PropertyTwo").SetPropertyOrder(2);
descriptor.GetDynamicProperty("PropertyThree").SetPropertyOrder(3);

This modifies the order in which properties are returned by the GetProperties method.

Installation

Just grab it from NuGet

PM> Install-Package DynamicDescriptors

Copyright Matthew King 2012-2020. Distributed under the MIT License. Refer to license.txt for more information.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Black.Beard.ComponentModel:

Package Downloads
Black.Beard.Jslt

Implementation of jslt language in DOTNET. Use a template for transform Json document to another json document.

Black.Beard.Roslyn

Helper for compile Csharp at runtime

Black.Beard.Web.Server

Provide a service base for just concentrate your services

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.131 0 12/21/2024
1.0.130 0 12/21/2024
1.0.129 29 12/20/2024
1.0.128 29 12/20/2024
1.0.127 31 12/20/2024
1.0.124 133 12/7/2024
1.0.123 215 11/17/2024
1.0.122 91 11/17/2024
1.0.121 95 11/17/2024
1.0.120 96 11/17/2024
1.0.119 101 11/17/2024
1.0.118 97 11/17/2024
1.0.117 399 10/28/2024
1.0.116 191 10/18/2024
1.0.115 88 10/16/2024
1.0.114 115 9/10/2024
1.0.113 105 9/10/2024
1.0.112 103 9/10/2024
1.0.111 98 9/10/2024
1.0.110 111 9/3/2024
1.0.109 114 8/28/2024
1.0.108 109 8/27/2024
1.0.107 127 8/13/2024
1.0.106 114 7/17/2024
1.0.105 96 7/6/2024
1.0.104 97 7/6/2024
1.0.103 108 7/6/2024
1.0.102 94 7/5/2024
1.0.101 108 7/5/2024
1.0.100 113 7/3/2024
1.0.99 101 7/3/2024
1.0.98 102 7/3/2024
1.0.97 87 7/3/2024
1.0.96 116 7/2/2024
1.0.95 142 5/5/2024
1.0.94 146 5/4/2024
1.0.93 89 5/3/2024
1.0.92 106 5/3/2024
1.0.91 275 5/2/2024
1.0.90 110 5/1/2024
1.0.89 140 4/24/2024
1.0.88 137 4/24/2024
1.0.87 123 4/24/2024
1.0.86 158 4/22/2024
1.0.85 138 4/22/2024
1.0.84 120 4/21/2024
1.0.83 108 4/21/2024
1.0.82 121 4/21/2024
1.0.81 118 4/21/2024
1.0.80 118 4/21/2024
1.0.79 119 4/18/2024
1.0.78 111 4/18/2024
1.0.77 123 4/18/2024
1.0.76 123 4/18/2024
1.0.75 125 4/15/2024
1.0.74 151 4/14/2024
1.0.73 126 4/14/2024
1.0.72 118 4/14/2024
1.0.71 124 4/14/2024
1.0.70 150 4/13/2024
1.0.69 123 4/13/2024
1.0.68 129 4/13/2024
1.0.67 124 4/13/2024
1.0.66 121 4/13/2024
1.0.65 125 4/13/2024
1.0.64 125 4/12/2024
1.0.63 124 4/12/2024
1.0.62 118 4/11/2024
1.0.61 121 4/10/2024
1.0.60 131 4/8/2024
1.0.58 252 4/6/2024
1.0.57 1,338 3/9/2024
1.0.56 130 3/5/2024
1.0.55 150 3/5/2024
1.0.54 150 3/4/2024
1.0.53 193 3/4/2024
1.0.52 354 3/3/2024
1.0.51 133 3/3/2024
1.0.50 124 3/3/2024
1.0.49 120 3/2/2024
1.0.48 883 2/4/2024
1.0.47 120 1/27/2024
1.0.46 176 1/6/2024
1.0.45 142 1/6/2024
1.0.44 156 1/6/2024
1.0.41 1,741 6/17/2023
1.0.40 286 6/17/2023
1.0.37 6,480 3/19/2022
1.0.36 4,267 3/15/2022
1.0.35 471 3/6/2022
1.0.34 453 2/11/2022
1.0.33 436 2/11/2022
1.0.32 436 2/11/2022
1.0.30 444 2/11/2022
1.0.29 476 2/9/2022
1.0.28 437 2/8/2022
1.0.27 438 2/8/2022
1.0.26 441 2/8/2022
1.0.25 445 2/6/2022
1.0.24 508 2/4/2022
1.0.23 484 2/2/2022
1.0.22 456 2/1/2022
1.0.21 452 1/27/2022
1.0.20 464 1/27/2022
1.0.19 464 1/26/2022
1.0.18 467 1/26/2022
1.0.17 462 1/20/2022
1.0.16 450 1/15/2022
1.0.15 466 1/15/2022
1.0.14 458 1/12/2022
1.0.13 318 1/12/2022
1.0.12 466 1/12/2022
1.0.9 303 1/9/2022
1.0.8 309 1/9/2022
1.0.7 277 1/9/2022
1.0.6 296 1/8/2022
1.0.5 11,636 12/19/2021
1.0.4 322 12/19/2021
1.0.3 341 12/19/2021