【发布时间】:2017-07-05 00:51:07
【问题描述】:
我们的域模型属性都是“内部的”,以保护我们采用的 BDD 方法。我真的很喜欢把所有东西都放在内部。
最近,我试图让 RazorEngine 使用这些具有内部成员的域模型之一来处理模板。编译时出现错误:.Attendee.FirstName' is inaccessible due to its protection level
我尝试将这一行 [assembly: InternalsVisibleTo("RazorEngine")] 添加到我的域模型的 AssemblyInfo.cs 中,但它似乎没有帮助。
如何使我的内部属性对同一项目中的 RazorEngine 可见。
代码
public class Attendee : AggregateRoot {
protected internal virtual new long Id { get; protected set; }
protected internal virtual Event Event { get; protected set; }
protected internal virtual bool? Online { get; protected set; }
protected internal virtual string FirstName { get; protected set; }
protected internal virtual string LastName { get; protected set; }
protected internal virtual string Email { get; protected set; }
protected internal virtual string Affiliation { get; protected set; }
protected internal virtual string MeetingPassword { get; protected set; }
protected internal virtual decimal AmountPaid { get; protected set; }
protected internal virtual DateTime DateRegistered { get; protected set; }
public virtual void SendEmail() {
var assembly = Assembly.GetExecutingAssembly();
var stream = assembly.GetManifestResourceStream("VirtualAcademy.Domain.Email.RegistrationConfirmation.cshtml");
var reader = new StreamReader(stream);
var template = reader.ReadToEnd();
Engine.Razor.RunCompile(template, "key", null, this);
}
CSHTML 文件
@model VirtualAcademy.Domain.Attendee
<html>
<body style="font: 12px arial, sans-serif">
<div>
<span id="SalutationLabel">Hello @Model.FirstName @Model.LastName,</span>
【问题讨论】:
-
我真的不明白为什么这是一个问题 - 如果它是一个旨在供第三方库使用的模型,它应该是公开的。
标签: c# access-modifiers razorengine