gpt4 book ai didi

c# - 根据使用的构造函数有选择地公开方法?

转载 作者:行者123 更新时间:2023-11-30 17:02:36 25 4
gpt4 key购买 nike

是否可以根据调用的构造函数有选择地选择(可能使用装饰器?)将哪些方法公开给对象?

例如,我的类有 2 个构造函数,一个为空,一个传入文件路径字符串。

public class MyClass
{
private readonly string _filePath;
public MyClass()
{

}

public MyClass(string filePath)
{
_filePath = filePath
}

public Export()
{
var fi = new FileInfo(_filePath);
}
}

是否有可能在我创建一个新的 MyClass 对象时,只有当我使用带参数的构造函数来暴露 Export 方法时?

var myClass = new MyClass();
//myClass.Export() not available

var myClass = new MyClass(@"C:\");
//myClass.Export() is available

最佳答案

这表明您应该拥有两种不同的类型。也许它们都应该是父类型(可能是抽象的)的子类型,或者一个应该简单地扩展另一个。

然后你可以根据你是否有一个字符串构造一个适当类型的实例。带有字符串的类型可以有一个额外的方法。

public class MyClass
{
public MyClass()
{

}

public void Foo()
{
//todo do stuff
}
}

public class BetterMyClass : MyClass
{
private readonly string _filePath;

public BetterMyClass(string filePath)
{
_filePath = filePath;
}

public void Export()
{
var fi = new FileInfo(_filePath);
}
}

然后您的用法就可以正常工作了:

var myClass = new MyClass();
//myClass.Export(); //syntax error

var myClass2 = new BetterMyClass(@"C:\");
myClass.Export(); //works

关于c# - 根据使用的构造函数有选择地公开方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19574679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com