我們的域模型屬性都是「內部」的,以保護我們所採用的BDD方法。我真的很喜歡把所有東西都放在內部在RazorEngine中使用內部屬性
最近我試圖讓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>
我真的不明白爲什麼這是一個問題 - 如果它是被設計爲通過第三方庫消耗應該是公共的典範。 – caesay