C# 字段/变量中的存储类型
如何将类型存储在静态字段中,以便执行类似操作(注意:只是一个伪代码示例):C# 字段/变量中的存储类型,c#,static,field,C#,Static,Field,如何将类型存储在静态字段中,以便执行类似操作(注意:只是一个伪代码示例): 除了new是一个关键字之外,存储类型的代码应该可以正常工作 但是,您的代码 Writer.Write(str); 这是毫无意义的 类Type没有方法Write(string) 感觉你想要的是一个 这样,您就可以将实现IWriter的任何类传递到SetWriter,例如 public class MyWriter : IWriter { public void Write(string text) {
除了
new
是一个关键字之外,存储类型的代码应该可以正常工作
但是,您的代码
Writer.Write(str);
这是毫无意义的
类Type
没有方法Write(string)
感觉你想要的是一个
这样,您就可以将实现IWriter
的任何类传递到SetWriter
,例如
public class MyWriter : IWriter
{
public void Write(string text)
{
// Do something to "write" text
}
}
Logger.SetWriter(new MyWriter());
好吧,那个示例代码毫无意义,但为什么不简单地使用一个公共接口呢?例如,
System.IO
名称空间中的所有(我认为至少所有)文本写入类型都继承自抽象类TextWriter
,因此
例如:
public class Logger
{
public Logger(TextWriter writer)
{
_writer = writer;
}
private TextWriter _writer;
public void Write(string text)
{
_writer.Write(text);
}
}
现在,公开编写者并依靠代码用户确保其始终有效是一个好主意吗?可能不会,但这更多的是一种设计考虑。另外,您的java样式设置器是A)C#的非典型,C#对属性有很好的语法支持,B)因为支持字段是公共的,所以毫无用处。非常简单:
Type variableName = typeof(SomeTypeName);
或
不过,我不确定这是否有助于你真正想做的事情。查看其他答案。您实际想要实现的目标是什么?不是在代码中,而是作为一个抽象概念?我试图将类型存储在任何类型的变量中,但类型本身不是一个语句,因此它不起作用…您不能使用某个类型的实例,而不是
类型
?可能是类似于TextWriter
?@Jwosty是的,但你为什么要这么做?根本原因是什么?确实是斯维克;我认为他想要的行为也可以通过泛型更好地实现;而不是持有类型;只要有一个在类型上工作的助手类。不管怎样,泛型还是一些界面设计。为了更好地描述我的具体情况,我改变了帖子
public class Logger
{
public Logger(TextWriter writer)
{
_writer = writer;
}
private TextWriter _writer;
public void Write(string text)
{
_writer.Write(text);
}
}
Type variableName = typeof(SomeTypeName);
Type variableName = someObject.GetType();