MmsCore.Expressions
0.2.3
dotnet add package MmsCore.Expressions --version 0.2.3
NuGet\Install-Package MmsCore.Expressions -Version 0.2.3
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="MmsCore.Expressions" Version="0.2.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MmsCore.Expressions --version 0.2.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MmsCore.Expressions, 0.2.3"
#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 MmsCore.Expressions as a Cake Addin #addin nuget:?package=MmsCore.Expressions&version=0.2.3 // Install MmsCore.Expressions as a Cake Tool #tool nuget:?package=MmsCore.Expressions&version=0.2.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
[!IMPORTANT] This Project is not yet stable. Breaking changes may occur at any time.
MmsCore.Expressions
MmsCore.Expressionsには、ラムダ式の解析とパブリック・フィールドおよびプロパティへのアクセスを行うための静的クラスExpressionSupport、FieldAccessor、PropertyAccessorが用意されています。これらのクラスを使用すると、式ツリーで記述されたラムダ式からフィールド名やプロパティ名を抽出できるため、開発者は式ツリーやオブジェクト・フィールド、プロパティをより効率的に操作できるようになります。
🚀 Getting Started
PropertyAccessor
以下に PropertyAccessor
の使用例を示します。
private class TestableClass1
{
private readonly int _readonlyBackingFieldProperty;
public TestableClass1()
{
}
public TestableClass1(int readonlyAutoPropertyValue)
{
this.ReadonlyAutoProperty = readonlyAutoPropertyValue;
this._readonlyBackingFieldProperty = readonlyAutoPropertyValue;
}
public string SomeProperty { get; set; } = default!;
public int ReadonlyAutoProperty { get; private set; }
public int ReadonlyBackingFieldProperty => this._readonlyBackingFieldProperty;
public int WriteOnlyBackingFieldProperty
{
set { }
}
internal string InternalProperty { get; set; } = default!;
protected string ProtectedProperty { get; set; } = default!;
private string PrivateProperty { get; set; } = default!;
}
// PropertyAccessorを取得します。ここではTestableClass1のSomePropertyを対象にしています。
var accessor = PropertyAccessor.LookupOrNull((TestableClass1 target) => target.SomeProperty);
// 取得したPropertyAccessorを確認します。
Assert.NotNull(accessor);
Assert.Equal(typeof(TestableClass1), accessor.DeclaringType);
Assert.True(accessor.IsReadable);
Assert.True(accessor.IsWritable);
Assert.Equal(typeof(TestableClass1).GetProperty("SomeProperty"), accessor.Member);
Assert.Equal(typeof(string), accessor.MemberType);
Assert.Equal("SomeProperty", accessor.Name);
// TestableClass1のインスタンスを作成し、SomePropertyに値を設定します。
var test = new TestableClass1 { SomeProperty = "ほげ" };
// GetValueメソッドを使用してSomePropertyの値を取得し、期待値と一致することを確認します。
var actual = accessor.GetValue(test);
Assert.Equal("ほげ", actual);
// SetValueメソッドを使用してSomePropertyに新しい値を設定し、値が更新されたことを確認します。
accessor.SetValue(test, "もげもげ");
Assert.Equal("もげもげ", test.SomeProperty);
以下に PropertyAccessor.Lookup
メソッドの使用例を示します。
// TestableClass1の型を指定してPropertyAccessorを取得します。
var accessors = PropertyAccessor.Lookup(typeof(TestableClass1));
// 取得したPropertyAccessorの数が4であることを確認します。
Assert.Equal(4, accessors.Count);
// 取得したPropertyAccessorのキーが期待通りであることを確認します。
Assert.Equal(
["SomeProperty", "ReadonlyAutoProperty", "ReadonlyBackingFieldProperty", "WriteOnlyBackingFieldProperty"],
accessors.Keys);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- MmsCore.Extensions (>= 0.2.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
0.2.3 | 244 | 6/7/2024 | |
0.2.2 | 212 | 2/29/2024 | |
0.2.1 | 119 | 2/19/2024 | |
0.2.0 | 95 | 2/15/2024 | |
0.1.1 | 117 | 2/11/2024 | |
0.1.0 | 88 | 2/11/2024 | |
0.0.1-beta.5 | 125 | 1/21/2024 | |
0.0.1-beta.4 | 104 | 1/12/2024 | |
0.0.1-beta.3 | 84 | 1/12/2024 | |
0.0.1-beta.2 | 97 | 1/10/2024 |