45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using Microsoft.AspNetCore.Razor.Language.CodeGeneration;
|
|
|
|
namespace Microsoft.AspNetCore.Mvc.Razor.Extensions.Version1_X
|
|
{
|
|
public class InjectTargetExtension : IInjectTargetExtension
|
|
{
|
|
private const string RazorInjectAttribute = "[global::Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]";
|
|
|
|
public void WriteInjectProperty(CodeRenderingContext context, InjectIntermediateNode node)
|
|
{
|
|
if (context == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(context));
|
|
}
|
|
|
|
if (node == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(node));
|
|
}
|
|
|
|
var property = $"public {node.TypeName} {node.MemberName} {{ get; private set; }}";
|
|
|
|
if (node.Source.HasValue)
|
|
{
|
|
using (context.CodeWriter.BuildLinePragma(node.Source.Value))
|
|
{
|
|
context.CodeWriter
|
|
.WriteLine(RazorInjectAttribute)
|
|
.WriteLine(property);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
context.CodeWriter
|
|
.WriteLine(RazorInjectAttribute)
|
|
.WriteLine(property);
|
|
}
|
|
}
|
|
}
|
|
}
|