[英]Pass property into a class when creating an instance of an interface
我有这个界面:
public interface IMessage
{
string Subject { get; }
string Body { get; }
string ToAddress { get; }
}
然后是一个实现它的类:
public class RestoreEntityMessage : IMessage
{
public string Subject
{
get { return ConfigurationManager.AppSettings["RestoreEntitySubject"]; }
}
public string Body
{
get { return ConfigurationManager.AppSettings["RestoreEntityBody"]; }
}
public string ToAddress
{
get { return ConfigurationManager.AppSettings["EntitryToAddress"]; }
}
}
然后,当使用它时:
IMessage message = new RetireEntityMessage();
但是,我需要将一个字符串传递给Body
,该字符串在每个实例中都是唯一的。 因此,回到RestoreEntityMessage
我需要执行以下操作:
public string Body
{
get { return myVar + ConfigurationManager.AppSettings["RestoreEntityBody"];
}
但是我不确定如何一路获取myVar
。 我可以做这样的事情吗?
IMessage message = new RetireEntityMessage(myVar);
如果是的话,如何修改类/接口以接受参数?
谢谢!
接口中不能包含构造函数,但这也意味着您的接口对代码中的任何构造函数都无关紧要。
如果您将班级更改为此:
public class RestoreEntityMessage : IMessage
{
private string _someString;
public RetireEntityMessage(string someString)
{
_someString = someString;
}
public string Body
{
get { return _someString + ConfigurationManager.AppSettings["RestoreEntityBody"];
}
public string Subject
{
get { return ConfigurationManager.AppSettings["RestoreEntitySubject"]; }
}
public string ToAddress
{
get { return ConfigurationManager.AppSettings["EntitryToAddress"]; }
}
}
一切应该没问题。
考虑一下接口的作用。 它是对象外观的契约。 它不关心它的创建,仅关心它具有您定义的形状 。 添加此构造函数不会破坏任何内容,因为您仍在实现接口的成员。
是的-只需在类中添加一个构造函数即可。
public class RestoreEntityMessage : IMessage
{
private string _myvar;
public RestoreEntityMessage(string myvar)
{
_myvar = myvar;
}
public string Body
{
get { return _myvar + ConfigurationManager.AppSettings["RestoreEntityBody"]; }
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.