4using Microsoft.VisualStudio.TestTools.UnitTesting;
6using System.Threading.Tasks;
13 private static async Task<EvaluateManagedBackingFieldsWalker> GetWalker(
string code)
15 var document = TestHelpers.Create(code);
16 var root = await document.GetSyntaxRootAsync();
17 var model = await document.GetSemanticModelAsync();
19 var fieldNode = root.DescendantNodes().OfType<FieldDeclarationSyntax>().
Single();
20 var fieldSymbol = model.GetDeclaredSymbol(fieldNode.Declaration.Variables[0]) as IFieldSymbol;
21 var propertyNode = root.DescendantNodes().OfType<PropertyDeclarationSyntax>().
Single();
23 var getter = propertyNode.AccessorList.Accessors.Single(
24 _ => _.IsKind(SyntaxKind.GetAccessorDeclaration)).Body;
26 return new EvaluateManagedBackingFieldsWalker(getter, model, fieldSymbol);
35public class A : BusinessBase<A>
37 public static readonly PropertyInfo<string> DataProperty =
38 RegisterProperty<string>(_ => _.Data);
42 get { return GetProperty(DataProperty); }
43 set { SetProperty(DataProperty, value); }
46 var walker = await GetWalker(code);
47 Assert.IsTrue(walker.UsesField);
56public class A : BusinessBase<A>
58 public static readonly PropertyInfo<string> DataProperty =
59 RegisterProperty<string>(_ => _.Data);
60 public string Data { get; set; }
62 var walker = await GetWalker(code);
63 Assert.IsFalse(walker.UsesField);
Csla.Test.DataPortalTest.Single Single
async Task WalkWhenFieldIsUsedByPropertyInfoManagement()
async Task WalkWhenFieldIsNotUsedByPropertyInfoManagement()