创建接口实例时将 属性 传递给 class
Pass property into a class when creating an instance of an interface
我有这个界面:
public interface IMessage
{
string Subject { get; }
string Body { get; }
string ToAddress { get; }
}
然后是实现它的 class:
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);
如果是这样,我该如何修改class/接口来接受参数?
谢谢!
是的 - 只需将构造函数添加到 class...
public class RestoreEntityMessage : IMessage
{
private string _myvar;
public RestoreEntityMessage(string myvar)
{
_myvar = myvar;
}
public string Body
{
get { return _myvar + ConfigurationManager.AppSettings["RestoreEntityBody"]; }
}
}
接口中不能有构造函数,但这也意味着接口对代码中的任何构造函数都是无关紧要的。
如果您将 class 更改为:
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"]; }
}
}
一切都应该没问题。
想想接口的作用。它是关于对象外观的契约。它不关心它的创建,只关心它具有您定义的 shape。添加此构造函数不会破坏任何内容,因为您仍在实现接口的成员。
我有这个界面:
public interface IMessage
{
string Subject { get; }
string Body { get; }
string ToAddress { get; }
}
然后是实现它的 class:
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);
如果是这样,我该如何修改class/接口来接受参数?
谢谢!
是的 - 只需将构造函数添加到 class...
public class RestoreEntityMessage : IMessage
{
private string _myvar;
public RestoreEntityMessage(string myvar)
{
_myvar = myvar;
}
public string Body
{
get { return _myvar + ConfigurationManager.AppSettings["RestoreEntityBody"]; }
}
}
接口中不能有构造函数,但这也意味着接口对代码中的任何构造函数都是无关紧要的。
如果您将 class 更改为:
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"]; }
}
}
一切都应该没问题。
想想接口的作用。它是关于对象外观的契约。它不关心它的创建,只关心它具有您定义的 shape。添加此构造函数不会破坏任何内容,因为您仍在实现接口的成员。